oj 3.14.2 → 3.14.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -1
  3. data/README.md +0 -1
  4. data/ext/oj/buf.h +2 -2
  5. data/ext/oj/cache.c +16 -16
  6. data/ext/oj/cache8.c +7 -7
  7. data/ext/oj/circarray.c +2 -1
  8. data/ext/oj/circarray.h +2 -2
  9. data/ext/oj/code.c +2 -2
  10. data/ext/oj/code.h +2 -2
  11. data/ext/oj/compat.c +6 -14
  12. data/ext/oj/custom.c +1 -1
  13. data/ext/oj/debug.c +3 -9
  14. data/ext/oj/dump.c +16 -16
  15. data/ext/oj/dump_compat.c +551 -576
  16. data/ext/oj/dump_leaf.c +3 -5
  17. data/ext/oj/dump_object.c +35 -36
  18. data/ext/oj/dump_strict.c +2 -4
  19. data/ext/oj/encoder.c +1 -1
  20. data/ext/oj/err.c +2 -13
  21. data/ext/oj/err.h +9 -12
  22. data/ext/oj/extconf.rb +1 -1
  23. data/ext/oj/fast.c +24 -38
  24. data/ext/oj/intern.c +38 -42
  25. data/ext/oj/intern.h +3 -7
  26. data/ext/oj/mem.c +211 -217
  27. data/ext/oj/mem.h +10 -10
  28. data/ext/oj/mimic_json.c +18 -24
  29. data/ext/oj/object.c +5 -5
  30. data/ext/oj/odd.c +2 -1
  31. data/ext/oj/odd.h +4 -4
  32. data/ext/oj/oj.c +60 -81
  33. data/ext/oj/oj.h +53 -54
  34. data/ext/oj/parse.c +55 -118
  35. data/ext/oj/parse.h +5 -10
  36. data/ext/oj/parser.c +7 -8
  37. data/ext/oj/parser.h +7 -8
  38. data/ext/oj/rails.c +28 -59
  39. data/ext/oj/reader.c +5 -9
  40. data/ext/oj/reader.h +1 -1
  41. data/ext/oj/resolve.c +3 -4
  42. data/ext/oj/rxclass.c +1 -1
  43. data/ext/oj/rxclass.h +1 -1
  44. data/ext/oj/saj.c +4 -4
  45. data/ext/oj/saj2.c +32 -49
  46. data/ext/oj/saj2.h +1 -1
  47. data/ext/oj/scp.c +3 -14
  48. data/ext/oj/sparse.c +18 -67
  49. data/ext/oj/stream_writer.c +5 -18
  50. data/ext/oj/strict.c +7 -13
  51. data/ext/oj/string_writer.c +6 -14
  52. data/ext/oj/trace.h +27 -16
  53. data/ext/oj/usual.c +62 -61
  54. data/ext/oj/usual.h +6 -6
  55. data/ext/oj/util.h +1 -1
  56. data/ext/oj/val_stack.h +4 -4
  57. data/ext/oj/wab.c +7 -9
  58. data/lib/oj/active_support_helper.rb +0 -1
  59. data/lib/oj/bag.rb +7 -1
  60. data/lib/oj/easy_hash.rb +4 -5
  61. data/lib/oj/error.rb +0 -1
  62. data/lib/oj/json.rb +4 -2
  63. data/lib/oj/mimic.rb +4 -2
  64. data/lib/oj/state.rb +8 -5
  65. data/lib/oj/version.rb +1 -2
  66. data/lib/oj.rb +0 -1
  67. data/test/_test_active.rb +0 -1
  68. data/test/_test_active_mimic.rb +0 -1
  69. data/test/_test_mimic_rails.rb +0 -1
  70. data/test/activerecord/result_test.rb +5 -6
  71. data/test/bar.rb +3 -3
  72. data/test/files.rb +1 -1
  73. data/test/foo.rb +5 -48
  74. data/test/helper.rb +1 -4
  75. data/test/isolated/shared.rb +3 -2
  76. data/test/json_gem/json_addition_test.rb +2 -2
  77. data/test/json_gem/json_common_interface_test.rb +4 -4
  78. data/test/json_gem/json_encoding_test.rb +0 -0
  79. data/test/json_gem/json_ext_parser_test.rb +1 -0
  80. data/test/json_gem/json_fixtures_test.rb +3 -2
  81. data/test/json_gem/json_generator_test.rb +43 -32
  82. data/test/json_gem/json_generic_object_test.rb +11 -11
  83. data/test/json_gem/json_parser_test.rb +46 -46
  84. data/test/json_gem/json_string_matching_test.rb +9 -9
  85. data/test/mem.rb +7 -7
  86. data/test/perf.rb +2 -2
  87. data/test/perf_compat.rb +1 -1
  88. data/test/perf_fast.rb +1 -1
  89. data/test/perf_file.rb +2 -2
  90. data/test/perf_object.rb +1 -2
  91. data/test/perf_once.rb +4 -4
  92. data/test/perf_parser.rb +1 -2
  93. data/test/perf_saj.rb +1 -2
  94. data/test/perf_scp.rb +1 -1
  95. data/test/perf_simple.rb +3 -3
  96. data/test/perf_strict.rb +1 -1
  97. data/test/perf_wab.rb +1 -1
  98. data/test/sample/change.rb +0 -1
  99. data/test/sample/dir.rb +0 -1
  100. data/test/sample/doc.rb +0 -1
  101. data/test/sample/file.rb +0 -1
  102. data/test/sample/group.rb +0 -1
  103. data/test/sample/hasprops.rb +0 -1
  104. data/test/sample/layer.rb +0 -1
  105. data/test/sample/rect.rb +0 -1
  106. data/test/sample/shape.rb +0 -1
  107. data/test/sample/text.rb +0 -1
  108. data/test/sample.rb +2 -3
  109. data/test/sample_json.rb +0 -1
  110. data/test/test_compat.rb +11 -9
  111. data/test/test_custom.rb +5 -9
  112. data/test/test_debian.rb +1 -1
  113. data/test/test_fast.rb +10 -20
  114. data/test/test_file.rb +8 -8
  115. data/test/test_integer_range.rb +2 -2
  116. data/test/test_null.rb +5 -3
  117. data/test/test_object.rb +6 -5
  118. data/test/test_parser_saj.rb +23 -21
  119. data/test/test_parser_usual.rb +3 -3
  120. data/test/test_saj.rb +2 -0
  121. data/test/test_scp.rb +6 -6
  122. data/test/test_strict.rb +6 -4
  123. data/test/test_various.rb +21 -24
  124. data/test/test_wab.rb +6 -5
  125. data/test/test_writer.rb +1 -1
  126. metadata +17 -26
  127. data/test/activesupport4/decoding_test.rb +0 -108
  128. data/test/activesupport4/encoding_test.rb +0 -531
  129. data/test/activesupport4/test_helper.rb +0 -41
  130. data/test/activesupport5/abstract_unit.rb +0 -45
  131. data/test/activesupport5/decoding_test.rb +0 -133
  132. data/test/activesupport5/encoding_test.rb +0 -500
  133. data/test/activesupport5/encoding_test_cases.rb +0 -98
  134. data/test/activesupport5/test_helper.rb +0 -72
  135. data/test/activesupport5/time_zone_test_helpers.rb +0 -39
data/ext/oj/mimic_json.c CHANGED
@@ -1,9 +1,9 @@
1
1
  // Copyright (c) 2012, 2017 Peter Ohler. All rights reserved.
2
2
  // Licensed under the MIT License. See LICENSE file in the project root for license details.
3
3
 
4
- #include "mem.h"
5
4
  #include "dump.h"
6
5
  #include "encode.h"
6
+ #include "mem.h"
7
7
  #include "oj.h"
8
8
  #include "parse.h"
9
9
 
@@ -349,12 +349,11 @@ static VALUE mimic_load(int argc, VALUE *argv, VALUE self) {
349
349
  static VALUE mimic_dump_load(int argc, VALUE *argv, VALUE self) {
350
350
  if (1 > argc) {
351
351
  rb_raise(rb_eArgError, "wrong number of arguments (0 for 1)");
352
- } else if (T_STRING == rb_type(*argv)) {
352
+ }
353
+ if (T_STRING == rb_type(*argv)) {
353
354
  return mimic_load(argc, argv, self);
354
- } else {
355
- return mimic_dump(argc, argv, self);
356
355
  }
357
- return Qnil;
356
+ return mimic_dump(argc, argv, self);
358
357
  }
359
358
 
360
359
  static VALUE mimic_generate_core(int argc, VALUE *argv, Options copts) {
@@ -368,8 +367,8 @@ static VALUE mimic_generate_core(int argc, VALUE *argv, Options copts) {
368
367
 
369
368
  oj_out_init(&out);
370
369
 
371
- out.omit_nil = copts->dump_opts.omit_nil;
372
- out.caller = CALLER_GENERATE;
370
+ out.omit_nil = copts->dump_opts.omit_nil;
371
+ out.caller = CALLER_GENERATE;
373
372
  // For obj.to_json or generate nan is not allowed but if called from dump
374
373
  // it is.
375
374
  copts->dump_opts.nan_dump = RaiseNan;
@@ -389,10 +388,8 @@ static VALUE mimic_generate_core(int argc, VALUE *argv, Options copts) {
389
388
  VALUE active_hack[1];
390
389
 
391
390
  if (Qundef == state_class) {
392
- rb_warn(
393
- "Oj::Rails.mimic_JSON was called implicitly. "
394
- "Call it explicitly beforehand if you want to remove this warning."
395
- );
391
+ rb_warn("Oj::Rails.mimic_JSON was called implicitly. "
392
+ "Call it explicitly beforehand if you want to remove this warning.");
396
393
  oj_define_mimic_json(0, NULL, Qnil);
397
394
  }
398
395
  active_hack[0] = rb_funcall(state_class, oj_new_id, 0);
@@ -467,7 +464,7 @@ oj_mimic_pretty_generate(int argc, VALUE *argv, VALUE self) {
467
464
  }
468
465
  if (1 == argc || Qnil == argv[1]) {
469
466
  h = rb_hash_new();
470
- } else {
467
+ } else {
471
468
  h = argv[1];
472
469
  }
473
470
  if (!oj_hash_has_key(h, oj_indent_sym)) {
@@ -486,10 +483,8 @@ oj_mimic_pretty_generate(int argc, VALUE *argv, VALUE self) {
486
483
  rb_hash_aset(h, oj_array_nl_sym, rb_str_new2("\n"));
487
484
  }
488
485
  if (Qundef == state_class) {
489
- rb_warn(
490
- "Oj::Rails.mimic_JSON was called implicitly. "
491
- "Call it explicitly beforehand if you want to remove this warning."
492
- );
486
+ rb_warn("Oj::Rails.mimic_JSON was called implicitly. "
487
+ "Call it explicitly beforehand if you want to remove this warning.");
493
488
  oj_define_mimic_json(0, NULL, Qnil);
494
489
  }
495
490
  rargs[1] = rb_funcall(state_class, oj_new_id, 1, h);
@@ -658,11 +653,9 @@ static VALUE mimic_recurse_proc(VALUE self, VALUE obj) {
658
653
  *
659
654
  * - *id* [_nil_|String] new create_id
660
655
  *
661
- * Returns [_String_] the id.
656
+ * Returns [_nil_|_String_] the id.
662
657
  */
663
658
  static VALUE mimic_set_create_id(VALUE self, VALUE id) {
664
- Check_Type(id, T_STRING);
665
-
666
659
  if (NULL != oj_default_options.create_id) {
667
660
  if (oj_json_class != oj_default_options.create_id) {
668
661
  OJ_R_FREE((char *)oj_default_options.create_id);
@@ -671,10 +664,11 @@ static VALUE mimic_set_create_id(VALUE self, VALUE id) {
671
664
  oj_default_options.create_id_len = 0;
672
665
  }
673
666
  if (Qnil != id) {
674
- size_t len = RSTRING_LEN(id) + 1;
667
+ const char *ptr = StringValueCStr(id);
668
+ size_t len = RSTRING_LEN(id) + 1;
675
669
 
676
670
  oj_default_options.create_id = OJ_R_ALLOC_N(char, len);
677
- strcpy((char *)oj_default_options.create_id, StringValuePtr(id));
671
+ strcpy((char *)oj_default_options.create_id, ptr);
678
672
  oj_default_options.create_id_len = len - 1;
679
673
  }
680
674
  return id;
@@ -763,9 +757,9 @@ static VALUE mimic_object_to_json(int argc, VALUE *argv, VALUE self) {
763
757
 
764
758
  oj_out_init(&out);
765
759
 
766
- out.omit_nil = copts.dump_opts.omit_nil;
767
- copts.mode = CompatMode;
768
- copts.to_json = No;
760
+ out.omit_nil = copts.dump_opts.omit_nil;
761
+ copts.mode = CompatMode;
762
+ copts.to_json = No;
769
763
  if (1 <= argc && Qnil != argv[0]) {
770
764
  oj_parse_mimic_dump_options(argv[0], &copts);
771
765
  }
data/ext/oj/object.c CHANGED
@@ -270,8 +270,8 @@ static int hat_num(ParseInfo pi, Val parent, Val kval, NumInfo ni) {
270
270
  parent->val = rb_funcall2(parent->val, oj_utc_id, 0, 0);
271
271
  } else if (ni->has_exp) {
272
272
  struct timespec ts;
273
- ts.tv_sec = ni->i;
274
- ts.tv_nsec = nsec;
273
+ ts.tv_sec = ni->i;
274
+ ts.tv_nsec = nsec;
275
275
  parent->val = rb_time_timespec_new(&ts, (int)ni->exp);
276
276
  } else {
277
277
  parent->val = rb_time_nano_new(ni->i, (long)nsec);
@@ -325,14 +325,14 @@ static int hat_value(ParseInfo pi, Val parent, const char *key, size_t klen, vol
325
325
  sc = oj_name2struct(pi, *RARRAY_CONST_PTR(value), rb_eArgError);
326
326
  }
327
327
  if (sc == rb_cRange) {
328
- parent->val = rb_class_new_instance(len - 1, RARRAY_CONST_PTR(value) + 1, rb_cRange);
328
+ parent->val = rb_class_new_instance(len - 1, RARRAY_CONST_PTR(value) + 1, rb_cRange);
329
329
  } else {
330
330
  // Create a properly initialized struct instance without calling the initialize method.
331
331
  parent->val = rb_obj_alloc(sc);
332
332
  // If the JSON array has more entries than the struct class allows, we record an error.
333
333
  #ifdef RSTRUCT_LEN
334
334
  #if RSTRUCT_LEN_RETURNS_INTEGER_OBJECT
335
- slen = (int)NUM2LONG(RSTRUCT_LEN(parent->val));
335
+ slen = (int)NUM2LONG(RSTRUCT_LEN(parent->val));
336
336
  #else // RSTRUCT_LEN_RETURNS_INTEGER_OBJECT
337
337
  slen = (int)RSTRUCT_LEN(parent->val);
338
338
  #endif // RSTRUCT_LEN_RETURNS_INTEGER_OBJECT
@@ -545,7 +545,7 @@ WHICH_TYPE:
545
545
  }
546
546
  } else {
547
547
  if (3 <= klen && '^' == *key && '#' == key[1] && T_ARRAY == rb_type(value)) {
548
- long len = RARRAY_LEN(value);
548
+ long len = RARRAY_LEN(value);
549
549
  volatile const VALUE *a = RARRAY_CONST_PTR(value);
550
550
 
551
551
  if (2 != len) {
data/ext/oj/odd.c CHANGED
@@ -1,11 +1,12 @@
1
1
  // Copyright (c) 2011 Peter Ohler. All rights reserved.
2
2
  // Licensed under the MIT License. See LICENSE file in the project root for license details.
3
3
 
4
- #include "mem.h"
5
4
  #include "odd.h"
6
5
 
7
6
  #include <string.h>
8
7
 
8
+ #include "mem.h"
9
+
9
10
  static Odd odds = NULL;
10
11
  static ID sec_id;
11
12
  static ID sec_fraction_id;
data/ext/oj/odd.h CHANGED
@@ -14,7 +14,7 @@ typedef VALUE (*AttrGetFunc)(VALUE obj);
14
14
 
15
15
  typedef struct _odd {
16
16
  struct _odd *next;
17
- const char * classname;
17
+ const char *classname;
18
18
  size_t clen;
19
19
  VALUE clas; // Ruby class or module
20
20
  VALUE create_obj;
@@ -22,15 +22,15 @@ typedef struct _odd {
22
22
  int attr_cnt;
23
23
  bool is_module;
24
24
  bool raw;
25
- const char * attr_names[MAX_ODD_ARGS]; // NULL terminated attr names
25
+ const char *attr_names[MAX_ODD_ARGS]; // NULL terminated attr names
26
26
  ID attrs[MAX_ODD_ARGS]; // 0 terminated attr IDs
27
27
  AttrGetFunc attrFuncs[MAX_ODD_ARGS];
28
- } * Odd;
28
+ } *Odd;
29
29
 
30
30
  typedef struct _oddArgs {
31
31
  Odd odd;
32
32
  VALUE args[MAX_ODD_ARGS];
33
- } * OddArgs;
33
+ } *OddArgs;
34
34
 
35
35
  extern void oj_odd_init(void);
36
36
  extern Odd oj_get_odd(VALUE clas);
data/ext/oj/oj.c CHANGED
@@ -11,10 +11,10 @@
11
11
  #include <sys/types.h>
12
12
  #include <unistd.h>
13
13
 
14
- #include "mem.h"
15
14
  #include "dump.h"
16
15
  #include "encode.h"
17
16
  #include "intern.h"
17
+ #include "mem.h"
18
18
  #include "odd.h"
19
19
  #include "parse.h"
20
20
  #include "rails.h"
@@ -22,7 +22,7 @@
22
22
  typedef struct _yesNoOpt {
23
23
  VALUE sym;
24
24
  char *attr;
25
- } * YesNoOpt;
25
+ } *YesNoOpt;
26
26
 
27
27
  void Init_oj();
28
28
 
@@ -156,8 +156,8 @@ static VALUE word_sym;
156
156
  static VALUE xmlschema_sym;
157
157
  static VALUE xss_safe_sym;
158
158
 
159
- rb_encoding *oj_utf8_encoding = 0;
160
- int oj_utf8_encoding_index = 0;
159
+ rb_encoding *oj_utf8_encoding = 0;
160
+ int oj_utf8_encoding_index = 0;
161
161
 
162
162
  #ifdef HAVE_PTHREAD_MUTEX_INIT
163
163
  pthread_mutex_t oj_cache_mutex;
@@ -465,7 +465,7 @@ static VALUE get_def_opts(VALUE self) {
465
465
  if (NULL == oj_default_options.ignore) {
466
466
  rb_hash_aset(opts, ignore_sym, Qnil);
467
467
  } else {
468
- VALUE * vp;
468
+ VALUE *vp;
469
469
  volatile VALUE a = rb_ary_new();
470
470
 
471
471
  for (vp = oj_default_options.ignore; Qnil != *vp; vp++) {
@@ -640,15 +640,9 @@ static int parse_options_cb(VALUE k, VALUE v, VALUE opts) {
640
640
  } else if (float_prec_sym == k) {
641
641
  int n;
642
642
 
643
- #ifdef RUBY_INTEGER_UNIFICATION
644
643
  if (rb_cInteger != rb_obj_class(v)) {
645
644
  rb_raise(rb_eArgError, ":float_precision must be a Integer.");
646
645
  }
647
- #else
648
- if (T_FIXNUM != rb_type(v)) {
649
- rb_raise(rb_eArgError, ":float_precision must be a Fixnum.");
650
- }
651
- #endif
652
646
  n = FIX2INT(v);
653
647
  if (0 >= n) {
654
648
  *copts->float_fmt = '\0';
@@ -663,15 +657,9 @@ static int parse_options_cb(VALUE k, VALUE v, VALUE opts) {
663
657
  } else if (cache_str_sym == k || cache_string_sym == k) {
664
658
  int n;
665
659
 
666
- #ifdef RUBY_INTEGER_UNIFICATION
667
660
  if (rb_cInteger != rb_obj_class(v)) {
668
661
  rb_raise(rb_eArgError, ":cache_str must be a Integer.");
669
662
  }
670
- #else
671
- if (T_FIXNUM != rb_type(v)) {
672
- rb_raise(rb_eArgError, ":cache_str must be a Fixnum.");
673
- }
674
- #endif
675
663
  n = FIX2INT(v);
676
664
  if (0 >= n) {
677
665
  copts->cache_str = 0;
@@ -684,15 +672,9 @@ static int parse_options_cb(VALUE k, VALUE v, VALUE opts) {
684
672
  } else if (sec_prec_sym == k) {
685
673
  int n;
686
674
 
687
- #ifdef RUBY_INTEGER_UNIFICATION
688
675
  if (rb_cInteger != rb_obj_class(v)) {
689
676
  rb_raise(rb_eArgError, ":second_precision must be a Integer.");
690
677
  }
691
- #else
692
- if (T_FIXNUM != rb_type(v)) {
693
- rb_raise(rb_eArgError, ":second_precision must be a Fixnum.");
694
- }
695
- #endif
696
678
  n = NUM2INT(v);
697
679
  if (0 > n) {
698
680
  n = 0;
@@ -950,7 +932,7 @@ static int parse_options_cb(VALUE k, VALUE v, VALUE opts) {
950
932
  if (Qnil == v) {
951
933
  return ST_CONTINUE;
952
934
  }
953
- copts->sym_key = (Qtrue == v) ? Yes : No;
935
+ copts->sym_key = (Qtrue == v) ? Yes : No;
954
936
  }
955
937
  return ST_CONTINUE;
956
938
  }
@@ -1115,7 +1097,7 @@ static VALUE load(int argc, VALUE *argv, VALUE self) {
1115
1097
  * Returns [_Object_|_Hash_|_Array_|_String_|_Fixnum_|_Float_|_Boolean_|_nil_]
1116
1098
  */
1117
1099
  static VALUE load_file(int argc, VALUE *argv, VALUE self) {
1118
- char * path;
1100
+ char *path;
1119
1101
  int fd;
1120
1102
  Mode mode = oj_default_options.mode;
1121
1103
  struct _parseInfo pi;
@@ -1123,7 +1105,7 @@ static VALUE load_file(int argc, VALUE *argv, VALUE self) {
1123
1105
  if (1 > argc) {
1124
1106
  rb_raise(rb_eArgError, "Wrong number of arguments to load().");
1125
1107
  }
1126
- Check_Type(*argv, T_STRING);
1108
+ path = StringValuePtr(*argv);
1127
1109
  parse_info_init(&pi);
1128
1110
  pi.options = oj_default_options;
1129
1111
  pi.handler = Qnil;
@@ -1154,16 +1136,15 @@ static VALUE load_file(int argc, VALUE *argv, VALUE self) {
1154
1136
  }
1155
1137
  }
1156
1138
  }
1157
- path = StringValuePtr(*argv);
1158
1139
  #ifdef _WIN32
1159
1140
  {
1160
1141
  WCHAR *wide_path;
1161
1142
  wide_path = rb_w32_mbstr_to_wstr(CP_UTF8, path, -1, NULL);
1162
- fd = rb_w32_wopen(wide_path, O_RDONLY);
1143
+ fd = rb_w32_wopen(wide_path, O_RDONLY);
1163
1144
  OJ_FREE(wide_path);
1164
1145
  }
1165
1146
  #else
1166
- fd = open(path, O_RDONLY);
1147
+ fd = open(path, O_RDONLY);
1167
1148
  #endif
1168
1149
  if (0 == fd) {
1169
1150
  rb_raise(rb_eIOError, "%s", strerror(errno));
@@ -1238,10 +1219,10 @@ static VALUE safe_load(VALUE self, VALUE doc) {
1238
1219
  */
1239
1220
 
1240
1221
  struct dump_arg {
1241
- struct _out * out;
1222
+ struct _out *out;
1242
1223
  struct _options *copts;
1243
1224
  int argc;
1244
- VALUE * argv;
1225
+ VALUE *argv;
1245
1226
  };
1246
1227
 
1247
1228
  static VALUE dump_body(VALUE a) {
@@ -1297,8 +1278,8 @@ static VALUE dump(int argc, VALUE *argv, VALUE self) {
1297
1278
 
1298
1279
  oj_out_init(arg.out);
1299
1280
 
1300
- arg.out->omit_nil = copts.dump_opts.omit_nil;
1301
- arg.out->caller = CALLER_DUMP;
1281
+ arg.out->omit_nil = copts.dump_opts.omit_nil;
1282
+ arg.out->caller = CALLER_DUMP;
1302
1283
 
1303
1284
  return rb_ensure(dump_body, (VALUE)&arg, dump_ensure, (VALUE)&arg);
1304
1285
  }
@@ -1345,7 +1326,7 @@ static VALUE to_json(int argc, VALUE *argv, VALUE self) {
1345
1326
 
1346
1327
  oj_out_init(&out);
1347
1328
 
1348
- out.omit_nil = copts.dump_opts.omit_nil;
1329
+ out.omit_nil = copts.dump_opts.omit_nil;
1349
1330
  // For obj.to_json or generate nan is not allowed but if called from dump
1350
1331
  // it is.
1351
1332
  oj_dump_obj_to_json_using_params(*argv, &copts, &out, argc - 1, argv + 1);
@@ -1377,7 +1358,6 @@ static VALUE to_file(int argc, VALUE *argv, VALUE self) {
1377
1358
  if (3 == argc) {
1378
1359
  oj_parse_options(argv[2], &copts);
1379
1360
  }
1380
- Check_Type(*argv, T_STRING);
1381
1361
  oj_write_obj_to_file(argv[1], StringValuePtr(*argv), &copts);
1382
1362
 
1383
1363
  return Qnil;
@@ -1719,8 +1699,7 @@ static VALUE protect_require(VALUE x) {
1719
1699
 
1720
1700
  extern void print_all_odds(const char *label);
1721
1701
 
1722
- static VALUE
1723
- debug_odd(VALUE self, VALUE label) {
1702
+ static VALUE debug_odd(VALUE self, VALUE label) {
1724
1703
  print_all_odds(RSTRING_PTR(label));
1725
1704
  return Qnil;
1726
1705
  }
@@ -1780,7 +1759,7 @@ void Init_oj(void) {
1780
1759
  rb_protect(protect_require, Qnil, &err);
1781
1760
  rb_require("stringio");
1782
1761
  oj_utf8_encoding_index = rb_enc_find_index("UTF-8");
1783
- oj_utf8_encoding = rb_enc_from_index(oj_utf8_encoding_index);
1762
+ oj_utf8_encoding = rb_enc_from_index(oj_utf8_encoding_index);
1784
1763
 
1785
1764
  // rb_define_module_function(Oj, "hash_test", hash_test, 0);
1786
1765
  rb_define_module_function(Oj, "debug_odd", debug_odd, 1);
@@ -1819,49 +1798,49 @@ void Init_oj(void) {
1819
1798
 
1820
1799
  rb_define_module_function(Oj, "mem_report", mem_report, 0);
1821
1800
 
1822
- oj_add_value_id = rb_intern("add_value");
1823
- oj_array_append_id = rb_intern("array_append");
1824
- oj_array_end_id = rb_intern("array_end");
1825
- oj_array_start_id = rb_intern("array_start");
1826
- oj_as_json_id = rb_intern("as_json");
1827
- oj_at_id = rb_intern("at");
1828
- oj_begin_id = rb_intern("begin");
1829
- oj_bigdecimal_id = rb_intern("BigDecimal");
1830
- oj_end_id = rb_intern("end");
1831
- oj_error_id = rb_intern("error");
1832
- oj_exclude_end_id = rb_intern("exclude_end?");
1833
- oj_file_id = rb_intern("file?");
1834
- oj_fileno_id = rb_intern("fileno");
1835
- oj_ftype_id = rb_intern("ftype");
1836
- oj_hash_end_id = rb_intern("hash_end");
1837
- oj_hash_key_id = rb_intern("hash_key");
1838
- oj_hash_set_id = rb_intern("hash_set");
1839
- oj_hash_start_id = rb_intern("hash_start");
1840
- oj_iconv_id = rb_intern("iconv");
1841
- oj_json_create_id = rb_intern("json_create");
1842
- oj_length_id = rb_intern("length");
1843
- oj_new_id = rb_intern("new");
1844
- oj_parse_id = rb_intern("parse");
1845
- oj_pos_id = rb_intern("pos");
1846
- oj_raw_json_id = rb_intern("raw_json");
1847
- oj_read_id = rb_intern("read");
1848
- oj_readpartial_id = rb_intern("readpartial");
1849
- oj_replace_id = rb_intern("replace");
1850
- oj_stat_id = rb_intern("stat");
1851
- oj_string_id = rb_intern("string");
1852
- oj_to_h_id = rb_intern("to_h");
1853
- oj_to_hash_id = rb_intern("to_hash");
1854
- oj_to_json_id = rb_intern("to_json");
1855
- oj_to_s_id = rb_intern("to_s");
1856
- oj_to_sym_id = rb_intern("to_sym");
1857
- oj_to_time_id = rb_intern("to_time");
1858
- oj_tv_nsec_id = rb_intern("tv_nsec");
1859
- oj_tv_sec_id = rb_intern("tv_sec");
1860
- oj_tv_usec_id = rb_intern("tv_usec");
1861
- oj_utc_id = rb_intern("utc");
1862
- oj_utc_offset_id = rb_intern("utc_offset");
1863
- oj_utcq_id = rb_intern("utc?");
1864
- oj_write_id = rb_intern("write");
1801
+ oj_add_value_id = rb_intern("add_value");
1802
+ oj_array_append_id = rb_intern("array_append");
1803
+ oj_array_end_id = rb_intern("array_end");
1804
+ oj_array_start_id = rb_intern("array_start");
1805
+ oj_as_json_id = rb_intern("as_json");
1806
+ oj_at_id = rb_intern("at");
1807
+ oj_begin_id = rb_intern("begin");
1808
+ oj_bigdecimal_id = rb_intern("BigDecimal");
1809
+ oj_end_id = rb_intern("end");
1810
+ oj_error_id = rb_intern("error");
1811
+ oj_exclude_end_id = rb_intern("exclude_end?");
1812
+ oj_file_id = rb_intern("file?");
1813
+ oj_fileno_id = rb_intern("fileno");
1814
+ oj_ftype_id = rb_intern("ftype");
1815
+ oj_hash_end_id = rb_intern("hash_end");
1816
+ oj_hash_key_id = rb_intern("hash_key");
1817
+ oj_hash_set_id = rb_intern("hash_set");
1818
+ oj_hash_start_id = rb_intern("hash_start");
1819
+ oj_iconv_id = rb_intern("iconv");
1820
+ oj_json_create_id = rb_intern("json_create");
1821
+ oj_length_id = rb_intern("length");
1822
+ oj_new_id = rb_intern("new");
1823
+ oj_parse_id = rb_intern("parse");
1824
+ oj_pos_id = rb_intern("pos");
1825
+ oj_raw_json_id = rb_intern("raw_json");
1826
+ oj_read_id = rb_intern("read");
1827
+ oj_readpartial_id = rb_intern("readpartial");
1828
+ oj_replace_id = rb_intern("replace");
1829
+ oj_stat_id = rb_intern("stat");
1830
+ oj_string_id = rb_intern("string");
1831
+ oj_to_h_id = rb_intern("to_h");
1832
+ oj_to_hash_id = rb_intern("to_hash");
1833
+ oj_to_json_id = rb_intern("to_json");
1834
+ oj_to_s_id = rb_intern("to_s");
1835
+ oj_to_sym_id = rb_intern("to_sym");
1836
+ oj_to_time_id = rb_intern("to_time");
1837
+ oj_tv_nsec_id = rb_intern("tv_nsec");
1838
+ oj_tv_sec_id = rb_intern("tv_sec");
1839
+ oj_tv_usec_id = rb_intern("tv_usec");
1840
+ oj_utc_id = rb_intern("utc");
1841
+ oj_utc_offset_id = rb_intern("utc_offset");
1842
+ oj_utcq_id = rb_intern("utc?");
1843
+ oj_write_id = rb_intern("write");
1865
1844
 
1866
1845
  rb_require("oj/bag");
1867
1846
  rb_require("oj/error");