@@ -2275,6 +2275,12 @@ static void utf8()
2275
2275
ASSERT_EQUALS (" 123" , readfile (" \xEF\xBB\xBF 123" ));
2276
2276
}
2277
2277
2278
+ static void utf8_invalid ()
2279
+ {
2280
+ ASSERT_EQUALS (" " , readfile (" \xEF 123" ));
2281
+ ASSERT_EQUALS (" " , readfile (" \xEF\xBB 123" ));
2282
+ }
2283
+
2278
2284
static void unicode ()
2279
2285
{
2280
2286
{
@@ -2307,6 +2313,42 @@ static void unicode()
2307
2313
}
2308
2314
}
2309
2315
2316
+ static void unicode_invalid ()
2317
+ {
2318
+ {
2319
+ const char code[] = " \xFF " ;
2320
+ ASSERT_EQUALS (" " , readfile (code, sizeof (code)));
2321
+ }
2322
+ {
2323
+ const char code[] = " \xFE " ;
2324
+ ASSERT_EQUALS (" " , readfile (code, sizeof (code)));
2325
+ }
2326
+ {
2327
+ const char code[] = " \xFE\xFF\x31 " ;
2328
+ ASSERT_EQUALS (" " , readfile (code, sizeof (code)));
2329
+ }
2330
+ {
2331
+ const char code[] = " \xFF\xFE\x31 " ;
2332
+ ASSERT_EQUALS (" 1" , readfile (code, sizeof (code)));
2333
+ }
2334
+ {
2335
+ const char code[] = " \xFE\xFF\x31\x32 " ;
2336
+ ASSERT_EQUALS (" " , readfile (code, sizeof (code)));
2337
+ }
2338
+ {
2339
+ const char code[] = " \xFF\xFE\x31\x32 " ;
2340
+ ASSERT_EQUALS (" " , readfile (code, sizeof (code)));
2341
+ }
2342
+ {
2343
+ const char code[] = " \xFE\xFF\x00\x31\x00\x32\x33 " ;
2344
+ ASSERT_EQUALS (" " , readfile (code, sizeof (code)));
2345
+ }
2346
+ {
2347
+ const char code[] = " \xFF\xFE\x31\x00\x32\x00\x33 " ;
2348
+ ASSERT_EQUALS (" 123" , readfile (code, sizeof (code)));
2349
+ }
2350
+ }
2351
+
2310
2352
static void warning ()
2311
2353
{
2312
2354
const char code[] = " #warning MSG\n 1" ;
@@ -2672,7 +2714,9 @@ static void runTests(int argc, char **argv, Input input)
2672
2714
2673
2715
// utf/unicode
2674
2716
TEST_CASE (utf8);
2717
+ TEST_CASE (utf8_invalid);
2675
2718
TEST_CASE (unicode);
2719
+ TEST_CASE (unicode_invalid);
2676
2720
2677
2721
TEST_CASE (warning);
2678
2722
0 commit comments