@@ -35,7 +35,7 @@ static VALUE calc_hash_key(ParseInfo pi, Val kval, char k1) {
3535 return ID2SYM (rb_intern3 (kval -> key + 1 , kval -> klen - 1 , oj_utf8_encoding ));
3636 }
3737 if (Yes == pi -> options .sym_key ) {
38- return ID2SYM (rb_intern3 (kval -> key , kval -> klen , oj_utf8_encoding ));
38+ return ID2SYM (rb_intern3 (kval -> key , kval -> klen , oj_utf8_encoding ));
3939 }
4040#if HAVE_RB_ENC_INTERNED_STR
4141 rkey = rb_enc_interned_str (kval -> key , kval -> klen , oj_utf8_encoding );
@@ -60,21 +60,16 @@ static VALUE str_to_value(ParseInfo pi, const char *str, size_t len, const char
6060 }
6161 rstr = oj_circ_array_get (pi -> circ_array , i );
6262 } else {
63- rstr = rb_utf8_str_new (str , len );
63+ rstr = rb_utf8_str_new (str , len );
6464 }
6565 return rstr ;
6666}
6767
68- #if (RUBY_VERSION_MAJOR == 1 && RUBY_VERSION_MINOR == 8 )
69- static VALUE oj_parse_xml_time (const char * str , int len ) {
70- return rb_funcall (rb_cTime , oj_parse_id , 1 , rb_str_new (str , len ));
71- }
72- #else
7368// The much faster approach (4x faster)
7469static int parse_num (const char * str , const char * end , int cnt ) {
75- int n = 0 ;
70+ int n = 0 ;
7671 char c ;
77- int i ;
72+ int i ;
7873
7974 for (i = cnt ; 0 < i ; i -- , str ++ ) {
8075 c = * str ;
@@ -88,9 +83,9 @@ static int parse_num(const char *str, const char *end, int cnt) {
8883
8984VALUE
9085oj_parse_xml_time (const char * str , int len ) {
91- VALUE args [8 ];
86+ VALUE args [8 ];
9287 const char * end = str + len ;
93- int n ;
88+ int n ;
9489
9590 // year
9691 if (0 > (n = parse_num (str , end , 4 ))) {
@@ -201,7 +196,6 @@ oj_parse_xml_time(const char *str, int len) {
201196 }
202197 return rb_funcall2 (rb_cTime , oj_new_id , 7 , args );
203198}
204- #endif
205199
206200static int hat_cstr (ParseInfo pi , Val parent , Val kval , const char * str , size_t len ) {
207201 const char * key = kval -> key ;
@@ -226,13 +220,10 @@ static int hat_cstr(ParseInfo pi, Val parent, Val kval, const char *str, size_t
226220 }
227221 parent -> val = odd -> clas ;
228222 parent -> odd_args = oj_odd_alloc_args (odd );
229- } break ;
230- case 'm' :
231- parent -> val = ID2SYM (rb_intern3 (str + 1 , len - 1 , oj_utf8_encoding ));
232- break ;
233- case 's' :
234- parent -> val = rb_utf8_str_new (str , len );
235223 break ;
224+ }
225+ case 'm' : parent -> val = ID2SYM (rb_intern3 (str + 1 , len - 1 , oj_utf8_encoding )); break ;
226+ case 's' : parent -> val = rb_utf8_str_new (str , len ); break ;
236227 case 'c' : // class
237228 {
238229 VALUE clas = oj_name2class (pi , str , len , Yes == pi -> options .auto_define , rb_eArgError );
@@ -242,7 +233,8 @@ static int hat_cstr(ParseInfo pi, Val parent, Val kval, const char *str, size_t
242233 } else {
243234 parent -> val = clas ;
244235 }
245- } break ;
236+ break ;
237+ }
246238 case 't' : // time
247239 parent -> val = oj_parse_xml_time (str , (int )len );
248240 break ;
@@ -282,22 +274,21 @@ static int hat_num(ParseInfo pi, Val parent, Val kval, NumInfo ni) {
282274 VALUE args [8 ];
283275
284276 sec_as_time (t , & ti );
285- args [0 ] = LONG2NUM ((long )(ti .year ));
286- args [1 ] = LONG2NUM (ti .mon );
287- args [2 ] = LONG2NUM (ti .day );
288- args [3 ] = LONG2NUM (ti .hour );
289- args [4 ] = LONG2NUM (ti .min );
290- args [5 ] = rb_float_new ((double )ti .sec + ((double )nsec + 0.5 ) / 1000000000.0 );
291- args [6 ] = LONG2NUM (ni -> exp );
277+ args [0 ] = LONG2NUM ((long )(ti .year ));
278+ args [1 ] = LONG2NUM (ti .mon );
279+ args [2 ] = LONG2NUM (ti .day );
280+ args [3 ] = LONG2NUM (ti .hour );
281+ args [4 ] = LONG2NUM (ti .min );
282+ args [5 ] = rb_float_new ((double )ti .sec + ((double )nsec + 0.5 ) / 1000000000.0 );
283+ args [6 ] = LONG2NUM (ni -> exp );
292284 parent -> val = rb_funcall2 (rb_cTime , oj_new_id , 7 , args );
293285 } else {
294286 parent -> val = rb_time_nano_new (ni -> i , (long )nsec );
295287 }
296288 }
297289 break ;
298- case 'i' : // circular index
299- if (!ni -> infinity && !ni -> neg && 1 == ni -> div && 0 == ni -> exp &&
300- 0 != pi -> circ_array ) { // fixnum
290+ case 'i' : // circular index
291+ if (!ni -> infinity && !ni -> neg && 1 == ni -> div && 0 == ni -> exp && 0 != pi -> circ_array ) { // fixnum
301292 if (Qnil == parent -> val ) {
302293 parent -> val = rb_hash_new ();
303294 }
@@ -402,9 +393,7 @@ static void hash_set_cstr(ParseInfo pi, Val kval, const char *str, size_t len, c
402393 }
403394 break ;
404395 case T_HASH :
405- rb_hash_aset (parent -> val ,
406- calc_hash_key (pi , kval , parent -> k1 ),
407- str_to_value (pi , str , len , orig ));
396+ rb_hash_aset (parent -> val , calc_hash_key (pi , kval , parent -> k1 ), str_to_value (pi , str , len , orig ));
408397 break ;
409398 case T_STRING :
410399 rval = str_to_value (pi , str , len , orig );
@@ -481,8 +470,8 @@ static void hash_set_num(ParseInfo pi, Val kval, NumInfo ni) {
481470 rb_hash_aset (parent -> val , calc_hash_key (pi , kval , parent -> k1 ), rval );
482471 break ;
483472 case T_OBJECT :
484- if (2 == klen && '^' == * key && 'i' == key [1 ] && !ni -> infinity && !ni -> neg &&
485- 1 == ni -> div && 0 == ni -> exp && 0 != pi -> circ_array ) { // fixnum
473+ if (2 == klen && '^' == * key && 'i' == key [1 ] && !ni -> infinity && !ni -> neg && 1 == ni -> div && 0 == ni -> exp &&
474+ 0 != pi -> circ_array ) { // fixnum
486475 oj_circ_array_set (pi -> circ_array , parent -> val , ni -> i );
487476 } else {
488477 rval = oj_num_as_value (ni );
@@ -559,11 +548,7 @@ static void hash_set_value(ParseInfo pi, Val kval, VALUE value) {
559548 volatile VALUE * a = RARRAY_PTR (value );
560549
561550 if (2 != len ) {
562- oj_set_error_at (pi ,
563- oj_parse_error_class ,
564- __FILE__ ,
565- __LINE__ ,
566- "invalid hash pair" );
551+ oj_set_error_at (pi , oj_parse_error_class , __FILE__ , __LINE__ , "invalid hash pair" );
567552 return ;
568553 }
569554 rb_hash_aset (parent -> val , * a , a [1 ]);
@@ -637,10 +622,7 @@ static void end_hash(ParseInfo pi) {
637622 } else if (NULL != parent -> odd_args ) {
638623 OddArgs oa = parent -> odd_args ;
639624
640- parent -> val = rb_funcall2 (oa -> odd -> create_obj ,
641- oa -> odd -> create_op ,
642- oa -> odd -> attr_cnt ,
643- oa -> args );
625+ parent -> val = rb_funcall2 (oa -> odd -> create_obj , oa -> odd -> create_op , oa -> odd -> attr_cnt , oa -> args );
644626 oj_odd_free (oa );
645627 parent -> odd_args = NULL ;
646628 }
@@ -653,8 +635,7 @@ static void array_append_cstr(ParseInfo pi, const char *str, size_t len, const c
653635 volatile VALUE rval = Qnil ;
654636
655637 // orig lets us know whether the string was ^r1 or \u005er1
656- if (3 <= len && 0 != pi -> circ_array && '^' == orig [0 ] &&
657- 0 == rb_array_len (stack_peek (& pi -> stack )-> val )) {
638+ if (3 <= len && 0 != pi -> circ_array && '^' == orig [0 ] && 0 == rb_array_len (stack_peek (& pi -> stack )-> val )) {
658639 if ('i' == str [1 ]) {
659640 long i = read_long (str + 2 , len - 2 );
660641
0 commit comments