Kouhei Sutou
null+****@clear*****
Thu May 21 22:37:44 JST 2015
Kouhei Sutou 2015-05-21 22:37:44 +0900 (Thu, 21 May 2015) New Revision: 1400edbaa5c7bfc73632e665eb631a72b90750e6 https://github.com/groonga/groonga-command-parser/commit/1400edbaa5c7bfc73632e665eb631a72b90750e6 Message: Use number callback instead of integer and double callback Because large integer is overflowed. It should be parsed in Ruby. Modified files: lib/groonga/command/parser/load-values-parser.rb Modified: lib/groonga/command/parser/load-values-parser.rb (+10 -8) =================================================================== --- lib/groonga/command/parser/load-values-parser.rb 2015-05-21 22:37:31 +0900 (22a2a08) +++ lib/groonga/command/parser/load-values-parser.rb 2015-05-21 22:37:44 +0900 (1f767c9) @@ -99,11 +99,13 @@ module Groonga @boolean_callback = callback(:int) do |c_boolean| push_value(c_boolean != 0) end - @integer_callback = callback(:long_long) do |integer| - push_value(integer) - end - @double_callback = callback(:double) do |double| - push_value(double) + @number_callback = callback(:string, :size_t) do |data, size| + number_data = data.slice(0, size) + if /[\.eE]/ =~ number_data + number_data.to_f + else + number_data.to_i + end end @string_callback = callback(:string, :size_t) do |data, size| string = data.slice(0, size) @@ -162,9 +164,9 @@ module Groonga callbacks = FFI_Yajl::YajlCallbacks.new(@callbacks_memory) callbacks[:yajl_null] = @null_callback callbacks[:yajl_boolean] = @boolean_callback - callbacks[:yajl_integer] = @integer_callback - callbacks[:yajl_double] = @double_callback - callbacks[:yajl_number] = nil + callbacks[:yajl_integer] = nil + callbacks[:yajl_double] = nil + callbacks[:yajl_number] = @number_callback callbacks[:yajl_string] = @string_callback callbacks[:yajl_start_map] = @start_map_callback callbacks[:yajl_map_key] = @map_key_callback -------------- next part -------------- HTML����������������������������...Download