[Groonga-commit] groonga/groonga-command-parser at 1400edb [master] Use number callback instead of integer and double callback

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index