Thanks for your checking. From: Eli Zaretskii > OK, but please make your patch compare against MOST_POSITIVE_FIXNUM, > instead of using INT_MAX or LONG_MAX. Also, if you know that the > value does not overflow an EMACS_INT, you can simply call make_number, > instead of make_fixnum_or_float. I revised the patch as you wrote. Would you like to check it? ;; supplement ;; check list (with results on 32-bit platforms) (string-to-number "268435455") ; 2^28 - 1 => 268435455 (string-to-number "268435456") ; 2^28 => 268435456.0 (string-to-number "268435457") ; 2^28 + 1 => 268435457.0 (string-to-number "-268435456") ; - 2^28 => -268435456 (string-to-number "-268435457") ; - 2^28 - 1 => -268435457.0 (string-to-number "536870911") ; 2^29 - 1 => 536870911.0 (string-to-number "1073741822") ; 2^30 - 1 => 1073741822.0 (string-to-number "2147483647") ; 2^31 - 1 => 2147483647.0 (string-to-number "1152921504606846975") ; 2^60 - 1 => 1.1529215046068467e+018 (string-to-number "1152921504606846976") ; 2^60 => 1.1529215046068467e+018 (string-to-number "1152921504606846977") ; 2^60 + 1 => 1.1529215046068467e+018 (string-to-number "-1152921504606846976") ; - 2^60 => -1.1529215046068467e+018 (string-to-number "-1152921504606846977") ; - 2^60 - 1 => -1.1529215046068467e+018 (string-to-number "9223372036854775807") ; 2^63 - 1 => 9.223372036854778e+018