diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl/ffi/parser.rb | 3 | ||||
-rw-r--r-- | lib/ffi_yajl/parser.rb | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/ffi_yajl/ffi/parser.rb b/lib/ffi_yajl/ffi/parser.rb index b97b2de..8e4dc07 100644 --- a/lib/ffi_yajl/ffi/parser.rb +++ b/lib/ffi_yajl/ffi/parser.rb @@ -30,6 +30,9 @@ module FFI_Yajl case stack.last when Hash raise FFI_Yajl::ParseError.new("internal error: missing key in parse") if key.nil? + if @opts[:unique_key_checking] && stack.last.has_key?(key) + raise FFI_Yajl::ParseError.new("repeated key: #{key}") + end stack.last[key] = val when Array stack.last.push(val) diff --git a/lib/ffi_yajl/parser.rb b/lib/ffi_yajl/parser.rb index d8389d7..5b9a0c9 100644 --- a/lib/ffi_yajl/parser.rb +++ b/lib/ffi_yajl/parser.rb @@ -75,6 +75,8 @@ module FFI_Yajl yajl_opts[:yajl_allow_multiple_values] = @opts[:allow_multiple_values] yajl_opts[:yajl_allow_partial_values] = @opts[:allow_partial_values] + yajl_opts[:unique_key_checking] = @opts[:unique_key_checking] + # XXX: bug-compat with ruby-yajl return nil if str == "" |