json 2.11.2 → 2.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 747a457b1988cb2f8b166b6e0c228a3dca50b90a120a9128f815c4c18fb9f450
4
- data.tar.gz: cc3c446db01177c9f7fbc6409d19e69bebce3845c77a7e8a3542c783a728d8b2
3
+ metadata.gz: 1919e2040a180b81eba1f475c511ace075b32015997b7d58098f93103941f8b2
4
+ data.tar.gz: d958784bea1136d935835d3e602fae96f97d25208cafec8a68db03619e6d34d0
5
5
  SHA512:
6
- metadata.gz: ea235083ce6d28a891ca4b583a7cb36641e736bc776a7039ff59c919e21e5d3eae4b2baf254dc190de003cccc62a1e7a03ada668c97f3226c154d1e76a35b307
7
- data.tar.gz: 4818eaff0e54ef1402253bdca221c1262257314131733ac678338c8d8c8d447052dcf11205e309573b32ea9354717d3c485011739c8a7ab4c12af3391d7e2500
6
+ metadata.gz: 742da3e909b2b6d8c1c9de5833b11be0f80e3b50f5296973b57f03cd45ae584162ac33bcbeb5b99fa767714b8531fef71b6d7ff559da40c3b04e75026ba3158f
7
+ data.tar.gz: e55ae407cc5b0da66922a41119b000da925391b58ea9da154a058b15f034334fae9e9c813cda12f4db75936c50e281df00acf8a4053808923d89d5efaa6927af
data/CHANGES.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changes
2
2
 
3
+ ### 2025-04-25 (2.11.3)
4
+
5
+ * Fix a regression in `JSON.pretty_generate` that could cause indentation to be off once some `#to_json` has been called.
6
+
3
7
  ### 2025-04-24 (2.11.2)
4
8
 
5
9
  * Add back `JSON::PRETTY_STATE_PROTOTYPE`. This constant was private API but is used by popular gems like `multi_json`.
@@ -45,7 +45,7 @@ static VALUE sym_indent, sym_space, sym_space_before, sym_object_nl, sym_array_n
45
45
 
46
46
  struct generate_json_data;
47
47
 
48
- typedef void (*generator_func)(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
48
+ typedef void (*generator_func)(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
49
49
 
50
50
  struct generate_json_data {
51
51
  FBuffer *buffer;
@@ -57,20 +57,20 @@ struct generate_json_data {
57
57
 
58
58
  static VALUE cState_from_state_s(VALUE self, VALUE opts);
59
59
  static VALUE cState_partial_generate(VALUE self, VALUE obj, generator_func, VALUE io);
60
- static void generate_json(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
61
- static void generate_json_object(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
62
- static void generate_json_array(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
63
- static void generate_json_string(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
64
- static void generate_json_null(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
65
- static void generate_json_false(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
66
- static void generate_json_true(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
60
+ static void generate_json(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
61
+ static void generate_json_object(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
62
+ static void generate_json_array(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
63
+ static void generate_json_string(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
64
+ static void generate_json_null(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
65
+ static void generate_json_false(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
66
+ static void generate_json_true(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
67
67
  #ifdef RUBY_INTEGER_UNIFICATION
68
- static void generate_json_integer(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
68
+ static void generate_json_integer(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
69
69
  #endif
70
- static void generate_json_fixnum(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
71
- static void generate_json_bignum(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
72
- static void generate_json_float(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
73
- static void generate_json_fragment(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj);
70
+ static void generate_json_fixnum(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
71
+ static void generate_json_bignum(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
72
+ static void generate_json_float(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
73
+ static void generate_json_fragment(FBuffer *buffer, struct generate_json_data *data, VALUE obj);
74
74
 
75
75
  static int usascii_encindex, utf8_encindex, binary_encindex;
76
76
 
@@ -802,12 +802,12 @@ json_object_i(VALUE key, VALUE val, VALUE _arg)
802
802
  int j;
803
803
 
804
804
  if (arg->iter > 0) fbuffer_append_char(buffer, ',');
805
- if (RB_UNLIKELY(state->object_nl)) {
806
- fbuffer_append_str(buffer, state->object_nl);
805
+ if (RB_UNLIKELY(data->state->object_nl)) {
806
+ fbuffer_append_str(buffer, data->state->object_nl);
807
807
  }
808
- if (RB_UNLIKELY(state->indent)) {
808
+ if (RB_UNLIKELY(data->state->indent)) {
809
809
  for (j = 0; j < depth; j++) {
810
- fbuffer_append_str(buffer, state->indent);
810
+ fbuffer_append_str(buffer, data->state->indent);
811
811
  }
812
812
  }
813
813
 
@@ -829,21 +829,22 @@ json_object_i(VALUE key, VALUE val, VALUE _arg)
829
829
  }
830
830
 
831
831
  if (RB_LIKELY(RBASIC_CLASS(key_to_s) == rb_cString)) {
832
- generate_json_string(buffer, data, state, key_to_s);
832
+ generate_json_string(buffer, data, key_to_s);
833
833
  } else {
834
- generate_json(buffer, data, state, key_to_s);
834
+ generate_json(buffer, data, key_to_s);
835
835
  }
836
- if (RB_UNLIKELY(state->space_before)) fbuffer_append_str(buffer, state->space_before);
836
+ if (RB_UNLIKELY(state->space_before)) fbuffer_append_str(buffer, data->state->space_before);
837
837
  fbuffer_append_char(buffer, ':');
838
- if (RB_UNLIKELY(state->space)) fbuffer_append_str(buffer, state->space);
839
- generate_json(buffer, data, state, val);
838
+ if (RB_UNLIKELY(state->space)) fbuffer_append_str(buffer, data->state->space);
839
+ generate_json(buffer, data, val);
840
840
 
841
841
  arg->iter++;
842
842
  return ST_CONTINUE;
843
843
  }
844
844
 
845
- static inline long increase_depth(JSON_Generator_State *state)
845
+ static inline long increase_depth(struct generate_json_data *data)
846
846
  {
847
+ JSON_Generator_State *state = data->state;
847
848
  long depth = ++state->depth;
848
849
  if (RB_UNLIKELY(depth > state->max_nesting && state->max_nesting)) {
849
850
  rb_raise(eNestingError, "nesting of %ld is too deep", --state->depth);
@@ -851,14 +852,14 @@ static inline long increase_depth(JSON_Generator_State *state)
851
852
  return depth;
852
853
  }
853
854
 
854
- static void generate_json_object(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
855
+ static void generate_json_object(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
855
856
  {
856
857
  int j;
857
- long depth = increase_depth(state);
858
+ long depth = increase_depth(data);
858
859
 
859
860
  if (RHASH_SIZE(obj) == 0) {
860
861
  fbuffer_append(buffer, "{}", 2);
861
- --state->depth;
862
+ --data->state->depth;
862
863
  return;
863
864
  }
864
865
 
@@ -870,49 +871,49 @@ static void generate_json_object(FBuffer *buffer, struct generate_json_data *dat
870
871
  };
871
872
  rb_hash_foreach(obj, json_object_i, (VALUE)&arg);
872
873
 
873
- depth = --state->depth;
874
- if (RB_UNLIKELY(state->object_nl)) {
875
- fbuffer_append_str(buffer, state->object_nl);
876
- if (RB_UNLIKELY(state->indent)) {
874
+ depth = --data->state->depth;
875
+ if (RB_UNLIKELY(data->state->object_nl)) {
876
+ fbuffer_append_str(buffer, data->state->object_nl);
877
+ if (RB_UNLIKELY(data->state->indent)) {
877
878
  for (j = 0; j < depth; j++) {
878
- fbuffer_append_str(buffer, state->indent);
879
+ fbuffer_append_str(buffer, data->state->indent);
879
880
  }
880
881
  }
881
882
  }
882
883
  fbuffer_append_char(buffer, '}');
883
884
  }
884
885
 
885
- static void generate_json_array(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
886
+ static void generate_json_array(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
886
887
  {
887
888
  int i, j;
888
- long depth = increase_depth(state);
889
+ long depth = increase_depth(data);
889
890
 
890
891
  if (RARRAY_LEN(obj) == 0) {
891
892
  fbuffer_append(buffer, "[]", 2);
892
- --state->depth;
893
+ --data->state->depth;
893
894
  return;
894
895
  }
895
896
 
896
897
  fbuffer_append_char(buffer, '[');
897
- if (RB_UNLIKELY(state->array_nl)) fbuffer_append_str(buffer, state->array_nl);
898
+ if (RB_UNLIKELY(data->state->array_nl)) fbuffer_append_str(buffer, data->state->array_nl);
898
899
  for(i = 0; i < RARRAY_LEN(obj); i++) {
899
900
  if (i > 0) {
900
901
  fbuffer_append_char(buffer, ',');
901
- if (RB_UNLIKELY(state->array_nl)) fbuffer_append_str(buffer, state->array_nl);
902
+ if (RB_UNLIKELY(data->state->array_nl)) fbuffer_append_str(buffer, data->state->array_nl);
902
903
  }
903
- if (RB_UNLIKELY(state->indent)) {
904
+ if (RB_UNLIKELY(data->state->indent)) {
904
905
  for (j = 0; j < depth; j++) {
905
- fbuffer_append_str(buffer, state->indent);
906
+ fbuffer_append_str(buffer, data->state->indent);
906
907
  }
907
908
  }
908
- generate_json(buffer, data, state, RARRAY_AREF(obj, i));
909
+ generate_json(buffer, data, RARRAY_AREF(obj, i));
909
910
  }
910
- state->depth = --depth;
911
- if (RB_UNLIKELY(state->array_nl)) {
912
- fbuffer_append_str(buffer, state->array_nl);
913
- if (RB_UNLIKELY(state->indent)) {
911
+ data->state->depth = --depth;
912
+ if (RB_UNLIKELY(data->state->array_nl)) {
913
+ fbuffer_append_str(buffer, data->state->array_nl);
914
+ if (RB_UNLIKELY(data->state->indent)) {
914
915
  for (j = 0; j < depth; j++) {
915
- fbuffer_append_str(buffer, state->indent);
916
+ fbuffer_append_str(buffer, data->state->indent);
916
917
  }
917
918
  }
918
919
  }
@@ -961,7 +962,7 @@ static inline VALUE ensure_valid_encoding(VALUE str)
961
962
  return str;
962
963
  }
963
964
 
964
- static void generate_json_string(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
965
+ static void generate_json_string(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
965
966
  {
966
967
  obj = ensure_valid_encoding(obj);
967
968
 
@@ -977,9 +978,9 @@ static void generate_json_string(FBuffer *buffer, struct generate_json_data *dat
977
978
  switch(rb_enc_str_coderange(obj)) {
978
979
  case ENC_CODERANGE_7BIT:
979
980
  case ENC_CODERANGE_VALID:
980
- if (RB_UNLIKELY(state->ascii_only)) {
981
- convert_UTF8_to_ASCII_only_JSON(&search, state->script_safe ? script_safe_escape_table : ascii_only_escape_table);
982
- } else if (RB_UNLIKELY(state->script_safe)) {
981
+ if (RB_UNLIKELY(data->state->ascii_only)) {
982
+ convert_UTF8_to_ASCII_only_JSON(&search, data->state->script_safe ? script_safe_escape_table : ascii_only_escape_table);
983
+ } else if (RB_UNLIKELY(data->state->script_safe)) {
983
984
  convert_UTF8_to_script_safe_JSON(&search);
984
985
  } else {
985
986
  convert_UTF8_to_JSON(&search);
@@ -992,7 +993,7 @@ static void generate_json_string(FBuffer *buffer, struct generate_json_data *dat
992
993
  fbuffer_append_char(buffer, '"');
993
994
  }
994
995
 
995
- static void generate_json_fallback(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
996
+ static void generate_json_fallback(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
996
997
  {
997
998
  VALUE tmp;
998
999
  if (rb_respond_to(obj, i_to_json)) {
@@ -1002,68 +1003,68 @@ static void generate_json_fallback(FBuffer *buffer, struct generate_json_data *d
1002
1003
  } else {
1003
1004
  tmp = rb_funcall(obj, i_to_s, 0);
1004
1005
  Check_Type(tmp, T_STRING);
1005
- generate_json_string(buffer, data, state, tmp);
1006
+ generate_json_string(buffer, data, tmp);
1006
1007
  }
1007
1008
  }
1008
1009
 
1009
- static inline void generate_json_symbol(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1010
+ static inline void generate_json_symbol(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1010
1011
  {
1011
- if (state->strict) {
1012
- generate_json_string(buffer, data, state, rb_sym2str(obj));
1012
+ if (data->state->strict) {
1013
+ generate_json_string(buffer, data, rb_sym2str(obj));
1013
1014
  } else {
1014
- generate_json_fallback(buffer, data, state, obj);
1015
+ generate_json_fallback(buffer, data, obj);
1015
1016
  }
1016
1017
  }
1017
1018
 
1018
- static void generate_json_null(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1019
+ static void generate_json_null(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1019
1020
  {
1020
1021
  fbuffer_append(buffer, "null", 4);
1021
1022
  }
1022
1023
 
1023
- static void generate_json_false(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1024
+ static void generate_json_false(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1024
1025
  {
1025
1026
  fbuffer_append(buffer, "false", 5);
1026
1027
  }
1027
1028
 
1028
- static void generate_json_true(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1029
+ static void generate_json_true(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1029
1030
  {
1030
1031
  fbuffer_append(buffer, "true", 4);
1031
1032
  }
1032
1033
 
1033
- static void generate_json_fixnum(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1034
+ static void generate_json_fixnum(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1034
1035
  {
1035
1036
  fbuffer_append_long(buffer, FIX2LONG(obj));
1036
1037
  }
1037
1038
 
1038
- static void generate_json_bignum(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1039
+ static void generate_json_bignum(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1039
1040
  {
1040
1041
  VALUE tmp = rb_funcall(obj, i_to_s, 0);
1041
1042
  fbuffer_append_str(buffer, tmp);
1042
1043
  }
1043
1044
 
1044
1045
  #ifdef RUBY_INTEGER_UNIFICATION
1045
- static void generate_json_integer(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1046
+ static void generate_json_integer(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1046
1047
  {
1047
1048
  if (FIXNUM_P(obj))
1048
- generate_json_fixnum(buffer, data, state, obj);
1049
+ generate_json_fixnum(buffer, data, obj);
1049
1050
  else
1050
- generate_json_bignum(buffer, data, state, obj);
1051
+ generate_json_bignum(buffer, data, obj);
1051
1052
  }
1052
1053
  #endif
1053
1054
 
1054
- static void generate_json_float(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1055
+ static void generate_json_float(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1055
1056
  {
1056
1057
  double value = RFLOAT_VALUE(obj);
1057
- char allow_nan = state->allow_nan;
1058
+ char allow_nan = data->state->allow_nan;
1058
1059
  if (isinf(value) || isnan(value)) {
1059
1060
  /* for NaN and Infinity values we either raise an error or rely on Float#to_s. */
1060
1061
  if (!allow_nan) {
1061
- if (state->strict && state->as_json) {
1062
- VALUE casted_obj = rb_proc_call_with_block(state->as_json, 1, &obj, Qnil);
1062
+ if (data->state->strict && data->state->as_json) {
1063
+ VALUE casted_obj = rb_proc_call_with_block(data->state->as_json, 1, &obj, Qnil);
1063
1064
  if (casted_obj != obj) {
1064
- increase_depth(state);
1065
- generate_json(buffer, data, state, casted_obj);
1066
- state->depth--;
1065
+ increase_depth(data);
1066
+ generate_json(buffer, data, casted_obj);
1067
+ data->state->depth--;
1067
1068
  return;
1068
1069
  }
1069
1070
  }
@@ -1089,30 +1090,30 @@ static void generate_json_float(FBuffer *buffer, struct generate_json_data *data
1089
1090
  buffer->len += len;
1090
1091
  }
1091
1092
 
1092
- static void generate_json_fragment(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1093
+ static void generate_json_fragment(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1093
1094
  {
1094
1095
  VALUE fragment = RSTRUCT_GET(obj, 0);
1095
1096
  Check_Type(fragment, T_STRING);
1096
1097
  fbuffer_append_str(buffer, fragment);
1097
1098
  }
1098
1099
 
1099
- static void generate_json(FBuffer *buffer, struct generate_json_data *data, JSON_Generator_State *state, VALUE obj)
1100
+ static void generate_json(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
1100
1101
  {
1101
1102
  bool as_json_called = false;
1102
1103
  start:
1103
1104
  if (obj == Qnil) {
1104
- generate_json_null(buffer, data, state, obj);
1105
+ generate_json_null(buffer, data, obj);
1105
1106
  } else if (obj == Qfalse) {
1106
- generate_json_false(buffer, data, state, obj);
1107
+ generate_json_false(buffer, data, obj);
1107
1108
  } else if (obj == Qtrue) {
1108
- generate_json_true(buffer, data, state, obj);
1109
+ generate_json_true(buffer, data, obj);
1109
1110
  } else if (RB_SPECIAL_CONST_P(obj)) {
1110
1111
  if (RB_FIXNUM_P(obj)) {
1111
- generate_json_fixnum(buffer, data, state, obj);
1112
+ generate_json_fixnum(buffer, data, obj);
1112
1113
  } else if (RB_FLONUM_P(obj)) {
1113
- generate_json_float(buffer, data, state, obj);
1114
+ generate_json_float(buffer, data, obj);
1114
1115
  } else if (RB_STATIC_SYM_P(obj)) {
1115
- generate_json_symbol(buffer, data, state, obj);
1116
+ generate_json_symbol(buffer, data, obj);
1116
1117
  } else {
1117
1118
  goto general;
1118
1119
  }
@@ -1120,43 +1121,43 @@ start:
1120
1121
  VALUE klass = RBASIC_CLASS(obj);
1121
1122
  switch (RB_BUILTIN_TYPE(obj)) {
1122
1123
  case T_BIGNUM:
1123
- generate_json_bignum(buffer, data, state, obj);
1124
+ generate_json_bignum(buffer, data, obj);
1124
1125
  break;
1125
1126
  case T_HASH:
1126
1127
  if (klass != rb_cHash) goto general;
1127
- generate_json_object(buffer, data, state, obj);
1128
+ generate_json_object(buffer, data, obj);
1128
1129
  break;
1129
1130
  case T_ARRAY:
1130
1131
  if (klass != rb_cArray) goto general;
1131
- generate_json_array(buffer, data, state, obj);
1132
+ generate_json_array(buffer, data, obj);
1132
1133
  break;
1133
1134
  case T_STRING:
1134
1135
  if (klass != rb_cString) goto general;
1135
- generate_json_string(buffer, data, state, obj);
1136
+ generate_json_string(buffer, data, obj);
1136
1137
  break;
1137
1138
  case T_SYMBOL:
1138
- generate_json_symbol(buffer, data, state, obj);
1139
+ generate_json_symbol(buffer, data, obj);
1139
1140
  break;
1140
1141
  case T_FLOAT:
1141
1142
  if (klass != rb_cFloat) goto general;
1142
- generate_json_float(buffer, data, state, obj);
1143
+ generate_json_float(buffer, data, obj);
1143
1144
  break;
1144
1145
  case T_STRUCT:
1145
1146
  if (klass != cFragment) goto general;
1146
- generate_json_fragment(buffer, data, state, obj);
1147
+ generate_json_fragment(buffer, data, obj);
1147
1148
  break;
1148
1149
  default:
1149
1150
  general:
1150
- if (state->strict) {
1151
- if (RTEST(state->as_json) && !as_json_called) {
1152
- obj = rb_proc_call_with_block(state->as_json, 1, &obj, Qnil);
1151
+ if (data->state->strict) {
1152
+ if (RTEST(data->state->as_json) && !as_json_called) {
1153
+ obj = rb_proc_call_with_block(data->state->as_json, 1, &obj, Qnil);
1153
1154
  as_json_called = true;
1154
1155
  goto start;
1155
1156
  } else {
1156
1157
  raise_generator_error(obj, "%"PRIsVALUE" not allowed in JSON", CLASS_OF(obj));
1157
1158
  }
1158
1159
  } else {
1159
- generate_json_fallback(buffer, data, state, obj);
1160
+ generate_json_fallback(buffer, data, obj);
1160
1161
  }
1161
1162
  }
1162
1163
  }
@@ -1166,7 +1167,7 @@ static VALUE generate_json_try(VALUE d)
1166
1167
  {
1167
1168
  struct generate_json_data *data = (struct generate_json_data *)d;
1168
1169
 
1169
- data->func(data->buffer, data, data->state, data->obj);
1170
+ data->func(data->buffer, data, data->obj);
1170
1171
 
1171
1172
  return Qnil;
1172
1173
  }
data/lib/json/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JSON
4
- VERSION = '2.11.2'
4
+ VERSION = '2.11.3'
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.11.2
4
+ version: 2.11.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-24 00:00:00.000000000 Z
10
+ date: 2025-04-25 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: This is a JSON implementation as a Ruby extension in C.
13
13
  email: flori@ping.de