diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-05-05 02:59:15 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-05-05 02:59:15 +0000 |
commit | abfb15fa5fd7311be821c5606161473e4ef57e91 (patch) | |
tree | a5d18368077699f1466f3459af23b9c4545520ab /src/data.c | |
parent | 251bdde1c6a635c10e76c96545864404885e3759 (diff) | |
download | emacs-abfb15fa5fd7311be821c5606161473e4ef57e91.tar.gz |
(Fnumber_to_string, Fstring_to_number):
Handle long EMACS_INT in sprintf and atol.
(store_symval_forwarding): Error if value out of range for an integer variable.
(Fstring_to_number): Avoid using make_number to return value. Maybe use atol.
Diffstat (limited to 'src/data.c')
-rw-r--r-- | src/data.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/data.c b/src/data.c index af5f67fa227..a6ab2ed345a 100644 --- a/src/data.c +++ b/src/data.c @@ -737,6 +737,9 @@ store_symval_forwarding (sym, valcontents, newval) case Lisp_Misc_Intfwd: CHECK_NUMBER (newval, 1); *XINTFWD (valcontents)->intvar = XINT (newval); + if (*XINTFWD (valcontents)->intvar != XINT (newval)) + error ("Value out of range for variable `%s'", + XSYMBOL (sym)->name->data); break; case Lisp_Misc_Boolfwd: @@ -1664,7 +1667,12 @@ NUM may be an integer or a floating point number.") } #endif /* LISP_FLOAT_TYPE */ - sprintf (buffer, "%d", XINT (num)); + if (sizeof (int) == sizeof (EMACS_INT)) + sprintf (buffer, "%d", XINT (num)); + else if (sizeof (long) == sizeof (EMACS_INT)) + sprintf (buffer, "%ld", XINT (num)); + else + abort (); return build_string (buffer); } @@ -1675,6 +1683,7 @@ It ignores leading spaces and tabs.") (str) register Lisp_Object str; { + Lisp_Object value; unsigned char *p; CHECK_STRING (str, 0); @@ -1691,7 +1700,13 @@ It ignores leading spaces and tabs.") return make_float (atof (p)); #endif /* LISP_FLOAT_TYPE */ - return make_number (atoi (p)); + if (sizeof (int) == sizeof (EMACS_INT)) + XSETINT (value, atoi (p)); + else if (sizeof (long) == sizeof (EMACS_INT)) + XSETINT (value, atol (p)); + else + abort (); + return value; } enum arithop |