summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2010-08-08 20:28:11 +0200
committerFlorian Frank <flori@ping.de>2010-08-08 20:28:11 +0200
commitae7a01f43d24dfe84b8ac2e2de505538e6011710 (patch)
tree984cb4e8be5826a06193fc065c2defe7c15c429f
parente8ef17ece7ddacbe7dde00ec3cb8a96401e1882c (diff)
downloadjson-ae7a01f43d24dfe84b8ac2e2de505538e6011710.tar.gz
keep track of depth correctly
-rw-r--r--ext/json/ext/generator/generator.c4
-rwxr-xr-xtests/test_json_generate.rb3
2 files changed, 2 insertions, 5 deletions
diff --git a/ext/json/ext/generator/generator.c b/ext/json/ext/generator/generator.c
index 0617466..ca82363 100644
--- a/ext/json/ext/generator/generator.c
+++ b/ext/json/ext/generator/generator.c
@@ -748,7 +748,7 @@ static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_S
VALUE key, key_to_s, keys;
if (max_nesting != 0 && depth > max_nesting) {
fbuffer_free(buffer);
- rb_raise(eNestingError, "nesting of %ld is too deep", depth);
+ rb_raise(eNestingError, "nesting of %ld is too deep", --state->depth);
}
fbuffer_append_char(buffer, '{');
keys = rb_funcall(obj, i_keys, 0);
@@ -794,7 +794,7 @@ static void generate_json_array(FBuffer *buffer, VALUE Vstate, JSON_Generator_St
int i, j;
if (max_nesting != 0 && depth > max_nesting) {
fbuffer_free(buffer);
- rb_raise(eNestingError, "nesting of %ld is too deep", depth);
+ rb_raise(eNestingError, "nesting of %ld is too deep", --state->depth);
}
fbuffer_append_char(buffer, '[');
if (array_nl) fbuffer_append(buffer, array_nl, array_nl_len);
diff --git a/tests/test_json_generate.rb b/tests/test_json_generate.rb
index d67a4b2..69c967e 100755
--- a/tests/test_json_generate.rb
+++ b/tests/test_json_generate.rb
@@ -170,9 +170,6 @@ EOT
assert_equal 0, JSON::SAFE_STATE_PROTOTYPE.depth
assert_raises(JSON::NestingError) { JSON.generate(ary) }
assert_equal 0, JSON::SAFE_STATE_PROTOTYPE.depth
- assert_equal 0, JSON::FAST_STATE_PROTOTYPE.depth
- assert_raises(JSON::NestingError) { JSON.fast_generate(ary) }
- assert_equal 0, JSON::FAST_STATE_PROTOTYPE.depth
assert_equal 0, JSON::PRETTY_STATE_PROTOTYPE.depth
assert_raises(JSON::NestingError) { JSON.pretty_generate(ary) }
assert_equal 0, JSON::PRETTY_STATE_PROTOTYPE.depth