summaryrefslogtreecommitdiff
path: root/lib/ffi_yajl/ffi
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2013-12-13 16:58:22 -0800
committerLamont Granquist <lamont@scriptkiddie.org>2013-12-13 16:58:22 -0800
commitea5d89e3f5998f2664f3a9498274691d4b7165df (patch)
tree75cca3279b51e342d863d199427f33eb89835cd0 /lib/ffi_yajl/ffi
parentd152d4826c802a9558c1c336d70bcfd6b5827634 (diff)
downloadffi-yajl-ea5d89e3f5998f2664f3a9498274691d4b7165df.tar.gz
fix precision issue by using yajl_gen_number
yajl_gen_double disagrees with ruby's Float#to_s in incompatible ways
Diffstat (limited to 'lib/ffi_yajl/ffi')
-rw-r--r--lib/ffi_yajl/ffi/encoder.rb3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/ffi_yajl/ffi/encoder.rb b/lib/ffi_yajl/ffi/encoder.rb
index 050c7e9..3a27d3c 100644
--- a/lib/ffi_yajl/ffi/encoder.rb
+++ b/lib/ffi_yajl/ffi/encoder.rb
@@ -128,7 +128,8 @@ end
class Float
def ffi_yajl(yajl_gen, state)
- if ( status = FFI_Yajl.yajl_gen_double(yajl_gen, self) ) != 0
+ str = self.to_s
+ if ( status = FFI_Yajl.yajl_gen_number(yajl_gen, str, str.bytesize) ) != 0
FFI_Yajl::Encoder.raise_error_for_status(status)
end
end