Skip to content

Commit 9a14f04

Browse files
committed
Fixed the null reference in empty content #42
1 parent a453a3b commit 9a14f04

File tree

4 files changed

+29
-13
lines changed

4 files changed

+29
-13
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
Released on Tuesday, March 31 2020.
44

5+
- Fixed issue with empty content (#42)
56
- Fixed handling of CSS gradients (#45)
67
- Improved CSS string representation of gradients (#46)
78
- Added support for the .NET Framework 4.6.1 target
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace AngleSharp.Css.Tests.Parsing
2+
{
3+
using AngleSharp.Css.Parser;
4+
using NUnit.Framework;
5+
using System.Threading.Tasks;
6+
7+
[TestFixture]
8+
public class StyleSheet
9+
{
10+
[Test]
11+
public async Task ParseEmptySheet_Issue42()
12+
{
13+
var sheetCode = "";
14+
var parser = new CssParser();
15+
var sheet = await parser.ParseStyleSheetAsync(sheetCode);
16+
Assert.IsNotNull(sheet);
17+
}
18+
}
19+
}

src/AngleSharp.Css/Parser/CssParser.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,12 @@ public ICssStyleSheet ParseStyleSheet(Stream content)
132132
public async Task<ICssStyleSheet> ParseStyleSheetAsync(String content, CancellationToken cancelToken)
133133
{
134134
var source = new TextSource(content);
135-
await source.PrefetchAllAsync(cancelToken).ConfigureAwait(false);
135+
136+
if (content.Length > 0)
137+
{
138+
await source.PrefetchAllAsync(cancelToken).ConfigureAwait(false);
139+
}
140+
136141
return ParseStylesheet(source);
137142
}
138143

src/AngleSharp.Css/Parser/CssParserExtensions.cs

+3-12
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,22 @@ public static class CssParserExtensions
1717
/// <param name="parser">The parser to extend.</param>
1818
/// <param name="content">The string content to parse.</param>
1919
/// <returns>The task yielding the created stylesheet.</returns>
20-
public static Task<ICssStyleSheet> ParseStyleSheetAsync(this ICssParser parser, String content)
21-
{
22-
return parser.ParseStyleSheetAsync(content, CancellationToken.None);
23-
}
20+
public static Task<ICssStyleSheet> ParseStyleSheetAsync(this ICssParser parser, String content) => parser.ParseStyleSheetAsync(content, CancellationToken.None);
2421

2522
/// <summary>
2623
/// Parses a CSS stylesheet from a string asynchronously.
2724
/// </summary>
2825
/// <param name="parser">The parser to extend.</param>
2926
/// <param name="content">The stream content to parse asynchronously.</param>
3027
/// <returns>The task yielding the created stylesheet.</returns>
31-
public static Task<ICssStyleSheet> ParseStyleSheetAsync(this ICssParser parser, Stream content)
32-
{
33-
return parser.ParseStyleSheetAsync(content, CancellationToken.None);
34-
}
28+
public static Task<ICssStyleSheet> ParseStyleSheetAsync(this ICssParser parser, Stream content) => parser.ParseStyleSheetAsync(content, CancellationToken.None);
3529

3630
/// <summary>
3731
/// Parses a CSS stylesheet from hosting stylesheet asynchronously.
3832
/// </summary>
3933
/// <param name="parser">The parser to extend.</param>
4034
/// <param name="sheet">The stylesheet containg the URL reference.</param>
4135
/// <returns>The task yielding the finished stylesheet.</returns>
42-
public static Task<ICssStyleSheet> ParseStyleSheetAsync(this ICssParser parser, ICssStyleSheet sheet)
43-
{
44-
return parser.ParseStyleSheetAsync(sheet, CancellationToken.None);
45-
}
36+
public static Task<ICssStyleSheet> ParseStyleSheetAsync(this ICssParser parser, ICssStyleSheet sheet) => parser.ParseStyleSheetAsync(sheet, CancellationToken.None);
4637
}
4738
}

0 commit comments

Comments
 (0)