summaryrefslogtreecommitdiff
path: root/src/font.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2011-06-19 22:51:47 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2011-06-19 22:51:47 -0700
commitccd6111c2415fc357944464cdf51ab496364241c (patch)
tree0f98d8b17e39b90a09bb005a539464fe00f165f3 /src/font.c
parentb5b8c9e5d3c14ad3510af9edb2d693f312eecf53 (diff)
downloademacs-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.c11
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