diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-06-19 22:51:47 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-06-19 22:51:47 -0700 |
commit | ccd6111c2415fc357944464cdf51ab496364241c (patch) | |
tree | 0f98d8b17e39b90a09bb005a539464fe00f165f3 /src/font.c | |
parent | b5b8c9e5d3c14ad3510af9edb2d693f312eecf53 (diff) | |
download | emacs-ccd6111c2415fc357944464cdf51ab496364241c.tar.gz |
* font.c (font_intern_prop): Don't assume string length fits in int.
Don't assume integer property fits in fixnum.
* font.h (font_intern_prop): 2nd arg is now ptrdiff_t, not int.
Diffstat (limited to 'src/font.c')
-rw-r--r-- | src/font.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/font.c b/src/font.c index b9cdde376a5..cc57af12141 100644 --- a/src/font.c +++ b/src/font.c @@ -232,9 +232,9 @@ static int num_font_drivers; STR. */ Lisp_Object -font_intern_prop (const char *str, int len, int force_symbol) +font_intern_prop (const char *str, ptrdiff_t len, int force_symbol) { - int i; + ptrdiff_t i; Lisp_Object tem; Lisp_Object obarray; EMACS_INT nbytes, nchars; @@ -247,7 +247,12 @@ font_intern_prop (const char *str, int len, int force_symbol) if (! isdigit (str[i])) break; if (i == len) - return make_number (atoi (str)); + { + Lisp_Object num = string_to_number (str, 10, 0); + if (! INTEGERP (num)) + xsignal1 (Qoverflow_error, num); + return num; + } } /* The following code is copied from the function intern (in |