Issue #12434 has been updated by Eito Katagiri.


Thank you. I should have looked up ruby spec. https://github.com/ruby/spec/blob/master/core/marshal/dump_spec.rb#L40-L48

----------------------------------------
Bug #12434: Marshal.dump does not dump some numbers as Fixnum
https://bugs.ruby-lang.org/issues/12434#change-58893

* Author: Eito Katagiri
* Status: Rejected
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.4.0dev (2016-05-28 trunk 55197) [x86_64-darwin15]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
`Marshal.dump` dumps numbers between 1073741824 and 4294967295 and between -4294967296 and -1073741825 as `Bignum`, but I think that those numbers should be dumped as `Fixnum`.

~~~
$ ./ruby --disable-gems -e'p Marshal.load("\x04\bi\x04\x00\x00\x00\x40")'
1073741824
$ ./ruby --disable-gems -e'p Marshal.dump(1073741824)'
"\x04\bl+\a\x00\x00\x00@"
$ ./ruby --disable-gems -e'p Marshal.load("\x04\bi\xfc\x00\x00\x00\x00")'
-4294967296
$ ./ruby --disable-gems -e'p Marshal.dump(-4294967296)'
"\x04\bl-\b\x00\x00\x00\x00\x01\x00"
~~~

I created proposed patch and submit pull request to https://github.com/ruby/ruby/pull/1366



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>