json 1.8.1 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of json might be problematic. Click here for more details.

@@ -610,8 +610,8 @@ static VALUE convert_encoding(VALUE source)
610
610
  * (keys) in a JSON object. Otherwise strings are returned, which is also
611
611
  * the default.
612
612
  * * *create_additions*: If set to false, the Parser doesn't create
613
- * additions even if a matchin class and create_id was found. This option
614
- * defaults to true.
613
+ * additions even if a matching class and create_id was found. This option
614
+ * defaults to false.
615
615
  * * *object_class*: Defaults to Hash
616
616
  * * *array_class*: Defaults to Array
617
617
  */
@@ -815,7 +815,7 @@ static VALUE cParser_parse(VALUE self)
815
815
  }
816
816
 
817
817
 
818
- static JSON_Parser *JSON_allocate()
818
+ static JSON_Parser *JSON_allocate(void)
819
819
  {
820
820
  JSON_Parser *json = ALLOC(JSON_Parser);
821
821
  MEMZERO(json, JSON_Parser, 1);
@@ -823,8 +823,9 @@ static JSON_Parser *JSON_allocate()
823
823
  return json;
824
824
  }
825
825
 
826
- static void JSON_mark(JSON_Parser *json)
826
+ static void JSON_mark(void *ptr)
827
827
  {
828
+ JSON_Parser *json = ptr;
828
829
  rb_gc_mark_maybe(json->Vsource);
829
830
  rb_gc_mark_maybe(json->create_id);
830
831
  rb_gc_mark_maybe(json->object_class);
@@ -832,16 +833,34 @@ static void JSON_mark(JSON_Parser *json)
832
833
  rb_gc_mark_maybe(json->match_string);
833
834
  }
834
835
 
835
- static void JSON_free(JSON_Parser *json)
836
+ static void JSON_free(void *ptr)
836
837
  {
838
+ JSON_Parser *json = ptr;
837
839
  fbuffer_free(json->fbuffer);
838
840
  ruby_xfree(json);
839
841
  }
840
842
 
843
+ static size_t JSON_memsize(const void *ptr)
844
+ {
845
+ const JSON_Parser *json = ptr;
846
+ return sizeof(*json) + FBUFFER_CAPA(json->fbuffer);
847
+ }
848
+
849
+ #ifdef NEW_TYPEDDATA_WRAPPER
850
+ static const rb_data_type_t JSON_Parser_type = {
851
+ "JSON/Parser",
852
+ {JSON_mark, JSON_free, JSON_memsize,},
853
+ #ifdef RUBY_TYPED_FREE_IMMEDIATELY
854
+ 0, 0,
855
+ RUBY_TYPED_FREE_IMMEDIATELY,
856
+ #endif
857
+ };
858
+ #endif
859
+
841
860
  static VALUE cJSON_parser_s_allocate(VALUE klass)
842
861
  {
843
862
  JSON_Parser *json = JSON_allocate();
844
- return Data_Wrap_Struct(klass, JSON_mark, JSON_free, json);
863
+ return TypedData_Wrap_Struct(klass, &JSON_Parser_type, json);
845
864
  }
846
865
 
847
866
  /*
@@ -0,0 +1,3 @@
1
+ require 'mkmf'
2
+ create_makefile('json')
3
+
@@ -130,7 +130,7 @@ public class Parser extends RubyObject {
130
130
  *
131
131
  * <dt><code>:create_additions</code>
132
132
  * <dd>If set to <code>false</code>, the Parser doesn't create additions
133
- * even if a matchin class and <code>create_id</code> was found. This option
133
+ * even if a matching class and <code>create_id</code> was found. This option
134
134
  * defaults to <code>true</code>.
135
135
  *
136
136
  * <dt><code>:object_class</code>
@@ -248,7 +248,7 @@ public class Parser extends RubyObject {
248
248
  */
249
249
  @JRubyMethod
250
250
  public IRubyObject parse(ThreadContext context) {
251
- return new ParserSession(this, context).parse();
251
+ return new ParserSession(this, context, info).parse();
252
252
  }
253
253
 
254
254
  /**
@@ -304,6 +304,7 @@ public class Parser extends RubyObject {
304
304
  private static class ParserSession {
305
305
  private final Parser parser;
306
306
  private final ThreadContext context;
307
+ private final RuntimeInfo info;
307
308
  private final ByteList byteList;
308
309
  private final ByteList view;
309
310
  private final byte[] data;
@@ -315,9 +316,10 @@ public class Parser extends RubyObject {
315
316
  // no idea about the origins of this value, ask Flori ;)
316
317
  private static final int EVIL = 0x666;
317
318
 
318
- private ParserSession(Parser parser, ThreadContext context) {
319
+ private ParserSession(Parser parser, ThreadContext context, RuntimeInfo info) {
319
320
  this.parser = parser;
320
321
  this.context = context;
322
+ this.info = info;
321
323
  this.byteList = parser.checkAndGetSource().getByteList();
322
324
  this.data = byteList.unsafeBytes();
323
325
  this.view = new ByteList(data, false);
@@ -337,11 +339,11 @@ public class Parser extends RubyObject {
337
339
  }
338
340
 
339
341
 
340
- // line 363 "Parser.rl"
342
+ // line 365 "Parser.rl"
341
343
 
342
344
 
343
345
 
344
- // line 345 "Parser.java"
346
+ // line 347 "Parser.java"
345
347
  private static byte[] init__JSON_value_actions_0()
346
348
  {
347
349
  return new byte [] {
@@ -455,7 +457,7 @@ static final int JSON_value_error = 0;
455
457
  static final int JSON_value_en_main = 1;
456
458
 
457
459
 
458
- // line 469 "Parser.rl"
460
+ // line 471 "Parser.rl"
459
461
 
460
462
 
461
463
  void parseValue(ParserResult res, int p, int pe) {
@@ -463,14 +465,14 @@ static final int JSON_value_en_main = 1;
463
465
  IRubyObject result = null;
464
466
 
465
467
 
466
- // line 467 "Parser.java"
468
+ // line 469 "Parser.java"
467
469
  {
468
470
  cs = JSON_value_start;
469
471
  }
470
472
 
471
- // line 476 "Parser.rl"
473
+ // line 478 "Parser.rl"
472
474
 
473
- // line 474 "Parser.java"
475
+ // line 476 "Parser.java"
474
476
  {
475
477
  int _klen;
476
478
  int _trans = 0;
@@ -496,13 +498,13 @@ case 1:
496
498
  while ( _nacts-- > 0 ) {
497
499
  switch ( _JSON_value_actions[_acts++] ) {
498
500
  case 9:
499
- // line 454 "Parser.rl"
501
+ // line 456 "Parser.rl"
500
502
  {
501
503
  p--;
502
504
  { p += 1; _goto_targ = 5; if (true) continue _goto;}
503
505
  }
504
506
  break;
505
- // line 506 "Parser.java"
507
+ // line 508 "Parser.java"
506
508
  }
507
509
  }
508
510
 
@@ -565,25 +567,25 @@ case 1:
565
567
  switch ( _JSON_value_actions[_acts++] )
566
568
  {
567
569
  case 0:
568
- // line 371 "Parser.rl"
570
+ // line 373 "Parser.rl"
569
571
  {
570
572
  result = getRuntime().getNil();
571
573
  }
572
574
  break;
573
575
  case 1:
574
- // line 374 "Parser.rl"
576
+ // line 376 "Parser.rl"
575
577
  {
576
578
  result = getRuntime().getFalse();
577
579
  }
578
580
  break;
579
581
  case 2:
580
- // line 377 "Parser.rl"
582
+ // line 379 "Parser.rl"
581
583
  {
582
584
  result = getRuntime().getTrue();
583
585
  }
584
586
  break;
585
587
  case 3:
586
- // line 380 "Parser.rl"
588
+ // line 382 "Parser.rl"
587
589
  {
588
590
  if (parser.allowNaN) {
589
591
  result = getConstant(CONST_NAN);
@@ -593,7 +595,7 @@ case 1:
593
595
  }
594
596
  break;
595
597
  case 4:
596
- // line 387 "Parser.rl"
598
+ // line 389 "Parser.rl"
597
599
  {
598
600
  if (parser.allowNaN) {
599
601
  result = getConstant(CONST_INFINITY);
@@ -603,7 +605,7 @@ case 1:
603
605
  }
604
606
  break;
605
607
  case 5:
606
- // line 394 "Parser.rl"
608
+ // line 396 "Parser.rl"
607
609
  {
608
610
  if (pe > p + 9 - (parser.quirksMode ? 1 : 0) &&
609
611
  absSubSequence(p, p + 9).equals(JSON_MINUS_INFINITY)) {
@@ -632,7 +634,7 @@ case 1:
632
634
  }
633
635
  break;
634
636
  case 6:
635
- // line 420 "Parser.rl"
637
+ // line 422 "Parser.rl"
636
638
  {
637
639
  parseString(res, p, pe);
638
640
  if (res.result == null) {
@@ -645,7 +647,7 @@ case 1:
645
647
  }
646
648
  break;
647
649
  case 7:
648
- // line 430 "Parser.rl"
650
+ // line 432 "Parser.rl"
649
651
  {
650
652
  currentNesting++;
651
653
  parseArray(res, p, pe);
@@ -660,7 +662,7 @@ case 1:
660
662
  }
661
663
  break;
662
664
  case 8:
663
- // line 442 "Parser.rl"
665
+ // line 444 "Parser.rl"
664
666
  {
665
667
  currentNesting++;
666
668
  parseObject(res, p, pe);
@@ -674,7 +676,7 @@ case 1:
674
676
  }
675
677
  }
676
678
  break;
677
- // line 678 "Parser.java"
679
+ // line 680 "Parser.java"
678
680
  }
679
681
  }
680
682
  }
@@ -694,7 +696,7 @@ case 5:
694
696
  break; }
695
697
  }
696
698
 
697
- // line 477 "Parser.rl"
699
+ // line 479 "Parser.rl"
698
700
 
699
701
  if (cs >= JSON_value_first_final && result != null) {
700
702
  res.update(result, p);
@@ -704,7 +706,7 @@ case 5:
704
706
  }
705
707
 
706
708
 
707
- // line 708 "Parser.java"
709
+ // line 710 "Parser.java"
708
710
  private static byte[] init__JSON_integer_actions_0()
709
711
  {
710
712
  return new byte [] {
@@ -803,7 +805,7 @@ static final int JSON_integer_error = 0;
803
805
  static final int JSON_integer_en_main = 1;
804
806
 
805
807
 
806
- // line 496 "Parser.rl"
808
+ // line 498 "Parser.rl"
807
809
 
808
810
 
809
811
  void parseInteger(ParserResult res, int p, int pe) {
@@ -821,15 +823,15 @@ static final int JSON_integer_en_main = 1;
821
823
  int cs = EVIL;
822
824
 
823
825
 
824
- // line 825 "Parser.java"
826
+ // line 827 "Parser.java"
825
827
  {
826
828
  cs = JSON_integer_start;
827
829
  }
828
830
 
829
- // line 513 "Parser.rl"
831
+ // line 515 "Parser.rl"
830
832
  int memo = p;
831
833
 
832
- // line 833 "Parser.java"
834
+ // line 835 "Parser.java"
833
835
  {
834
836
  int _klen;
835
837
  int _trans = 0;
@@ -910,13 +912,13 @@ case 1:
910
912
  switch ( _JSON_integer_actions[_acts++] )
911
913
  {
912
914
  case 0:
913
- // line 490 "Parser.rl"
915
+ // line 492 "Parser.rl"
914
916
  {
915
917
  p--;
916
918
  { p += 1; _goto_targ = 5; if (true) continue _goto;}
917
919
  }
918
920
  break;
919
- // line 920 "Parser.java"
921
+ // line 922 "Parser.java"
920
922
  }
921
923
  }
922
924
  }
@@ -936,7 +938,7 @@ case 5:
936
938
  break; }
937
939
  }
938
940
 
939
- // line 515 "Parser.rl"
941
+ // line 517 "Parser.rl"
940
942
 
941
943
  if (cs < JSON_integer_first_final) {
942
944
  return -1;
@@ -958,7 +960,7 @@ case 5:
958
960
  }
959
961
 
960
962
 
961
- // line 962 "Parser.java"
963
+ // line 964 "Parser.java"
962
964
  private static byte[] init__JSON_float_actions_0()
963
965
  {
964
966
  return new byte [] {
@@ -1060,7 +1062,7 @@ static final int JSON_float_error = 0;
1060
1062
  static final int JSON_float_en_main = 1;
1061
1063
 
1062
1064
 
1063
- // line 550 "Parser.rl"
1065
+ // line 552 "Parser.rl"
1064
1066
 
1065
1067
 
1066
1068
  void parseFloat(ParserResult res, int p, int pe) {
@@ -1078,15 +1080,15 @@ static final int JSON_float_en_main = 1;
1078
1080
  int cs = EVIL;
1079
1081
 
1080
1082
 
1081
- // line 1082 "Parser.java"
1083
+ // line 1084 "Parser.java"
1082
1084
  {
1083
1085
  cs = JSON_float_start;
1084
1086
  }
1085
1087
 
1086
- // line 567 "Parser.rl"
1088
+ // line 569 "Parser.rl"
1087
1089
  int memo = p;
1088
1090
 
1089
- // line 1090 "Parser.java"
1091
+ // line 1092 "Parser.java"
1090
1092
  {
1091
1093
  int _klen;
1092
1094
  int _trans = 0;
@@ -1167,13 +1169,13 @@ case 1:
1167
1169
  switch ( _JSON_float_actions[_acts++] )
1168
1170
  {
1169
1171
  case 0:
1170
- // line 541 "Parser.rl"
1172
+ // line 543 "Parser.rl"
1171
1173
  {
1172
1174
  p--;
1173
1175
  { p += 1; _goto_targ = 5; if (true) continue _goto;}
1174
1176
  }
1175
1177
  break;
1176
- // line 1177 "Parser.java"
1178
+ // line 1179 "Parser.java"
1177
1179
  }
1178
1180
  }
1179
1181
  }
@@ -1193,7 +1195,7 @@ case 5:
1193
1195
  break; }
1194
1196
  }
1195
1197
 
1196
- // line 569 "Parser.rl"
1198
+ // line 571 "Parser.rl"
1197
1199
 
1198
1200
  if (cs < JSON_float_first_final) {
1199
1201
  return -1;
@@ -1209,7 +1211,7 @@ case 5:
1209
1211
  }
1210
1212
 
1211
1213
 
1212
- // line 1213 "Parser.java"
1214
+ // line 1215 "Parser.java"
1213
1215
  private static byte[] init__JSON_string_actions_0()
1214
1216
  {
1215
1217
  return new byte [] {
@@ -1311,7 +1313,7 @@ static final int JSON_string_error = 0;
1311
1313
  static final int JSON_string_en_main = 1;
1312
1314
 
1313
1315
 
1314
- // line 614 "Parser.rl"
1316
+ // line 616 "Parser.rl"
1315
1317
 
1316
1318
 
1317
1319
  void parseString(ParserResult res, int p, int pe) {
@@ -1319,15 +1321,15 @@ static final int JSON_string_en_main = 1;
1319
1321
  IRubyObject result = null;
1320
1322
 
1321
1323
 
1322
- // line 1323 "Parser.java"
1324
+ // line 1325 "Parser.java"
1323
1325
  {
1324
1326
  cs = JSON_string_start;
1325
1327
  }
1326
1328
 
1327
- // line 621 "Parser.rl"
1329
+ // line 623 "Parser.rl"
1328
1330
  int memo = p;
1329
1331
 
1330
- // line 1331 "Parser.java"
1332
+ // line 1333 "Parser.java"
1331
1333
  {
1332
1334
  int _klen;
1333
1335
  int _trans = 0;
@@ -1408,7 +1410,7 @@ case 1:
1408
1410
  switch ( _JSON_string_actions[_acts++] )
1409
1411
  {
1410
1412
  case 0:
1411
- // line 589 "Parser.rl"
1413
+ // line 591 "Parser.rl"
1412
1414
  {
1413
1415
  int offset = byteList.begin();
1414
1416
  ByteList decoded = decoder.decode(byteList, memo + 1 - offset,
@@ -1423,13 +1425,13 @@ case 1:
1423
1425
  }
1424
1426
  break;
1425
1427
  case 1:
1426
- // line 602 "Parser.rl"
1428
+ // line 604 "Parser.rl"
1427
1429
  {
1428
1430
  p--;
1429
1431
  { p += 1; _goto_targ = 5; if (true) continue _goto;}
1430
1432
  }
1431
1433
  break;
1432
- // line 1433 "Parser.java"
1434
+ // line 1435 "Parser.java"
1433
1435
  }
1434
1436
  }
1435
1437
  }
@@ -1449,7 +1451,7 @@ case 5:
1449
1451
  break; }
1450
1452
  }
1451
1453
 
1452
- // line 623 "Parser.rl"
1454
+ // line 625 "Parser.rl"
1453
1455
 
1454
1456
  if (parser.createAdditions) {
1455
1457
  RubyHash match_string = parser.match_string;
@@ -1476,8 +1478,7 @@ case 5:
1476
1478
  }
1477
1479
  }
1478
1480
 
1479
- if (cs >= JSON_string_first_final && result != null) {
1480
- RuntimeInfo info = RuntimeInfo.forRuntime(context.getRuntime());
1481
+ if (cs >= JSON_string_first_final && result != null) {
1481
1482
  if (info.encodingsSupported() && result instanceof RubyString) {
1482
1483
  ((RubyString)result).force_encoding(context, info.utf8.get());
1483
1484
  }
@@ -1488,7 +1489,7 @@ case 5:
1488
1489
  }
1489
1490
 
1490
1491
 
1491
- // line 1492 "Parser.java"
1492
+ // line 1493 "Parser.java"
1492
1493
  private static byte[] init__JSON_array_actions_0()
1493
1494
  {
1494
1495
  return new byte [] {
@@ -1601,7 +1602,7 @@ static final int JSON_array_error = 0;
1601
1602
  static final int JSON_array_en_main = 1;
1602
1603
 
1603
1604
 
1604
- // line 697 "Parser.rl"
1605
+ // line 698 "Parser.rl"
1605
1606
 
1606
1607
 
1607
1608
  void parseArray(ParserResult res, int p, int pe) {
@@ -1621,14 +1622,14 @@ static final int JSON_array_en_main = 1;
1621
1622
  }
1622
1623
 
1623
1624
 
1624
- // line 1625 "Parser.java"
1625
+ // line 1626 "Parser.java"
1625
1626
  {
1626
1627
  cs = JSON_array_start;
1627
1628
  }
1628
1629
 
1629
- // line 716 "Parser.rl"
1630
+ // line 717 "Parser.rl"
1630
1631
 
1631
- // line 1632 "Parser.java"
1632
+ // line 1633 "Parser.java"
1632
1633
  {
1633
1634
  int _klen;
1634
1635
  int _trans = 0;
@@ -1709,7 +1710,7 @@ case 1:
1709
1710
  switch ( _JSON_array_actions[_acts++] )
1710
1711
  {
1711
1712
  case 0:
1712
- // line 666 "Parser.rl"
1713
+ // line 667 "Parser.rl"
1713
1714
  {
1714
1715
  parseValue(res, p, pe);
1715
1716
  if (res.result == null) {
@@ -1726,13 +1727,13 @@ case 1:
1726
1727
  }
1727
1728
  break;
1728
1729
  case 1:
1729
- // line 681 "Parser.rl"
1730
+ // line 682 "Parser.rl"
1730
1731
  {
1731
1732
  p--;
1732
1733
  { p += 1; _goto_targ = 5; if (true) continue _goto;}
1733
1734
  }
1734
1735
  break;
1735
- // line 1736 "Parser.java"
1736
+ // line 1737 "Parser.java"
1736
1737
  }
1737
1738
  }
1738
1739
  }
@@ -1752,7 +1753,7 @@ case 5:
1752
1753
  break; }
1753
1754
  }
1754
1755
 
1755
- // line 717 "Parser.rl"
1756
+ // line 718 "Parser.rl"
1756
1757
 
1757
1758
  if (cs >= JSON_array_first_final) {
1758
1759
  res.update(result, p + 1);
@@ -1762,7 +1763,7 @@ case 5:
1762
1763
  }
1763
1764
 
1764
1765
 
1765
- // line 1766 "Parser.java"
1766
+ // line 1767 "Parser.java"
1766
1767
  private static byte[] init__JSON_object_actions_0()
1767
1768
  {
1768
1769
  return new byte [] {
@@ -1885,7 +1886,7 @@ static final int JSON_object_error = 0;
1885
1886
  static final int JSON_object_en_main = 1;
1886
1887
 
1887
1888
 
1888
- // line 776 "Parser.rl"
1889
+ // line 777 "Parser.rl"
1889
1890
 
1890
1891
 
1891
1892
  void parseObject(ParserResult res, int p, int pe) {
@@ -1910,14 +1911,14 @@ static final int JSON_object_en_main = 1;
1910
1911
  }
1911
1912
 
1912
1913
 
1913
- // line 1914 "Parser.java"
1914
+ // line 1915 "Parser.java"
1914
1915
  {
1915
1916
  cs = JSON_object_start;
1916
1917
  }
1917
1918
 
1918
- // line 800 "Parser.rl"
1919
+ // line 801 "Parser.rl"
1919
1920
 
1920
- // line 1921 "Parser.java"
1921
+ // line 1922 "Parser.java"
1921
1922
  {
1922
1923
  int _klen;
1923
1924
  int _trans = 0;
@@ -1998,7 +1999,7 @@ case 1:
1998
1999
  switch ( _JSON_object_actions[_acts++] )
1999
2000
  {
2000
2001
  case 0:
2001
- // line 731 "Parser.rl"
2002
+ // line 732 "Parser.rl"
2002
2003
  {
2003
2004
  parseValue(res, p, pe);
2004
2005
  if (res.result == null) {
@@ -2015,7 +2016,7 @@ case 1:
2015
2016
  }
2016
2017
  break;
2017
2018
  case 1:
2018
- // line 746 "Parser.rl"
2019
+ // line 747 "Parser.rl"
2019
2020
  {
2020
2021
  parseString(res, p, pe);
2021
2022
  if (res.result == null) {
@@ -2035,13 +2036,13 @@ case 1:
2035
2036
  }
2036
2037
  break;
2037
2038
  case 2:
2038
- // line 764 "Parser.rl"
2039
+ // line 765 "Parser.rl"
2039
2040
  {
2040
2041
  p--;
2041
2042
  { p += 1; _goto_targ = 5; if (true) continue _goto;}
2042
2043
  }
2043
2044
  break;
2044
- // line 2045 "Parser.java"
2045
+ // line 2046 "Parser.java"
2045
2046
  }
2046
2047
  }
2047
2048
  }
@@ -2061,7 +2062,7 @@ case 5:
2061
2062
  break; }
2062
2063
  }
2063
2064
 
2064
- // line 801 "Parser.rl"
2065
+ // line 802 "Parser.rl"
2065
2066
 
2066
2067
  if (cs < JSON_object_first_final) {
2067
2068
  res.update(null, p + 1);
@@ -2094,7 +2095,7 @@ case 5:
2094
2095
  }
2095
2096
 
2096
2097
 
2097
- // line 2098 "Parser.java"
2098
+ // line 2099 "Parser.java"
2098
2099
  private static byte[] init__JSON_actions_0()
2099
2100
  {
2100
2101
  return new byte [] {
@@ -2198,7 +2199,7 @@ static final int JSON_error = 0;
2198
2199
  static final int JSON_en_main = 1;
2199
2200
 
2200
2201
 
2201
- // line 866 "Parser.rl"
2202
+ // line 867 "Parser.rl"
2202
2203
 
2203
2204
 
2204
2205
  public IRubyObject parseStrict() {
@@ -2208,16 +2209,16 @@ static final int JSON_en_main = 1;
2208
2209
  ParserResult res = new ParserResult();
2209
2210
 
2210
2211
 
2211
- // line 2212 "Parser.java"
2212
+ // line 2213 "Parser.java"
2212
2213
  {
2213
2214
  cs = JSON_start;
2214
2215
  }
2215
2216
 
2216
- // line 875 "Parser.rl"
2217
+ // line 876 "Parser.rl"
2217
2218
  p = byteList.begin();
2218
2219
  pe = p + byteList.length();
2219
2220
 
2220
- // line 2221 "Parser.java"
2221
+ // line 2222 "Parser.java"
2221
2222
  {
2222
2223
  int _klen;
2223
2224
  int _trans = 0;
@@ -2298,7 +2299,7 @@ case 1:
2298
2299
  switch ( _JSON_actions[_acts++] )
2299
2300
  {
2300
2301
  case 0:
2301
- // line 838 "Parser.rl"
2302
+ // line 839 "Parser.rl"
2302
2303
  {
2303
2304
  currentNesting = 1;
2304
2305
  parseObject(res, p, pe);
@@ -2312,7 +2313,7 @@ case 1:
2312
2313
  }
2313
2314
  break;
2314
2315
  case 1:
2315
- // line 850 "Parser.rl"
2316
+ // line 851 "Parser.rl"
2316
2317
  {
2317
2318
  currentNesting = 1;
2318
2319
  parseArray(res, p, pe);
@@ -2325,7 +2326,7 @@ case 1:
2325
2326
  }
2326
2327
  }
2327
2328
  break;
2328
- // line 2329 "Parser.java"
2329
+ // line 2330 "Parser.java"
2329
2330
  }
2330
2331
  }
2331
2332
  }
@@ -2345,7 +2346,7 @@ case 5:
2345
2346
  break; }
2346
2347
  }
2347
2348
 
2348
- // line 878 "Parser.rl"
2349
+ // line 879 "Parser.rl"
2349
2350
 
2350
2351
  if (cs >= JSON_first_final && p == pe) {
2351
2352
  return result;
@@ -2355,7 +2356,7 @@ case 5:
2355
2356
  }
2356
2357
 
2357
2358
 
2358
- // line 2359 "Parser.java"
2359
+ // line 2360 "Parser.java"
2359
2360
  private static byte[] init__JSON_quirks_mode_actions_0()
2360
2361
  {
2361
2362
  return new byte [] {
@@ -2458,7 +2459,7 @@ static final int JSON_quirks_mode_error = 0;
2458
2459
  static final int JSON_quirks_mode_en_main = 1;
2459
2460
 
2460
2461
 
2461
- // line 906 "Parser.rl"
2462
+ // line 907 "Parser.rl"
2462
2463
 
2463
2464
 
2464
2465
  public IRubyObject parseQuirksMode() {
@@ -2468,16 +2469,16 @@ static final int JSON_quirks_mode_en_main = 1;
2468
2469
  ParserResult res = new ParserResult();
2469
2470
 
2470
2471
 
2471
- // line 2472 "Parser.java"
2472
+ // line 2473 "Parser.java"
2472
2473
  {
2473
2474
  cs = JSON_quirks_mode_start;
2474
2475
  }
2475
2476
 
2476
- // line 915 "Parser.rl"
2477
+ // line 916 "Parser.rl"
2477
2478
  p = byteList.begin();
2478
2479
  pe = p + byteList.length();
2479
2480
 
2480
- // line 2481 "Parser.java"
2481
+ // line 2482 "Parser.java"
2481
2482
  {
2482
2483
  int _klen;
2483
2484
  int _trans = 0;
@@ -2558,7 +2559,7 @@ case 1:
2558
2559
  switch ( _JSON_quirks_mode_actions[_acts++] )
2559
2560
  {
2560
2561
  case 0:
2561
- // line 892 "Parser.rl"
2562
+ // line 893 "Parser.rl"
2562
2563
  {
2563
2564
  parseValue(res, p, pe);
2564
2565
  if (res.result == null) {
@@ -2570,7 +2571,7 @@ case 1:
2570
2571
  }
2571
2572
  }
2572
2573
  break;
2573
- // line 2574 "Parser.java"
2574
+ // line 2575 "Parser.java"
2574
2575
  }
2575
2576
  }
2576
2577
  }
@@ -2590,7 +2591,7 @@ case 5:
2590
2591
  break; }
2591
2592
  }
2592
2593
 
2593
- // line 918 "Parser.rl"
2594
+ // line 919 "Parser.rl"
2594
2595
 
2595
2596
  if (cs >= JSON_quirks_mode_first_final && p == pe) {
2596
2597
  return result;