File tree Expand file tree Collapse file tree 2 files changed +21
-12
lines changed
Expand file tree Collapse file tree 2 files changed +21
-12
lines changed Original file line number Diff line number Diff line change @@ -413,7 +413,7 @@ def generate(obj, anIO = nil)
413413 buf << obj . to_json ( self )
414414 end
415415 when Integer
416- buf << obj . to_s
416+ buf << String ( obj )
417417 when Symbol
418418 if @strict
419419 fast_serialize_string ( obj . name , buf )
@@ -652,7 +652,9 @@ def json_transform(state)
652652
653653 module Integer
654654 # Returns a JSON string representation for this Integer number.
655- def to_json ( *) to_s end
655+ def to_json ( *)
656+ String ( self )
657+ end
656658 end
657659
658660 module Float
Original file line number Diff line number Diff line change @@ -493,20 +493,27 @@ def foo.to_h
493493 assert_equal '2' , state . indent
494494 end
495495
496- if defined? ( JSON ::Ext ::Generator ) and RUBY_PLATFORM != "java"
497- def test_broken_bignum # [ruby-core:38867]
498- bignum = 1 << 64
499- original_to_s = bignum . class . instance_method ( :to_s )
500- bignum . class . class_eval do
501- def to_s
502- end
496+ def test_broken_bignum # [Bug #5173]
497+ bignum = 1 << 64
498+ bignum_to_s = bignum . to_s
499+
500+ original_to_s = bignum . class . instance_method ( :to_s )
501+ bignum . class . class_eval do
502+ def to_s
503+ nil
503504 end
505+ alias_method :to_s , :to_s
506+ end
507+ case RUBY_PLATFORM
508+ when "java"
509+ assert_equal bignum_to_s , JSON . generate ( bignum )
510+ else
504511 assert_raise ( TypeError ) do
505- JSON :: Ext :: Generator :: State . new . generate ( bignum )
512+ JSON . generate ( bignum )
506513 end
507- ensure
508- bignum . class . define_method ( :to_s , original_to_s ) if original_to_s
509514 end
515+ ensure
516+ bignum . class . define_method ( :to_s , original_to_s ) if original_to_s
510517 end
511518
512519 def test_hash_likeness_set_symbol
You can’t perform that action at this time.
0 commit comments