here, since it parses constructs like leading '-' and spaces,
which are not wanted; and it overflows with large numbers.
Instead, simply match F[0-9]+, which is what is wanted anyway.
2011-04-18 Paul Eggert <eggert@cs.ucla.edu>
+ * frame.c (frame_name_fnn_p): Get rid of strtol, which isn't right
+ here, since it parses constructs like leading '-' and spaces,
+ which are not wanted; and it overflows with large numbers.
+ Instead, simply match F[0-9]+, which is what is wanted anyway.
+
* alloc.c: Remove unportable assumptions about struct layout.
(SDATA_SELECTOR, SDATA_DATA_OFFSET): New macros.
(SDATA_OF_STRING, SDATA_SIZE, allocate_string_data):
static int
frame_name_fnn_p (char *str, EMACS_INT len)
{
- if (len > 1 && str[0] == 'F')
+ if (len > 1 && str[0] == 'F' && '0' <= str[1] && str[1] <= '9')
{
- char *end_ptr;
- long int n;
- errno = 0;
- n = strtol (str + 1, &end_ptr, 10);
-
- if (end_ptr == str + len
- && INT_MIN <= n && n <= INT_MAX
- && ((LONG_MIN < n && n < LONG_MAX) || errno != ERANGE))
+ char *p = str + 2;
+ while ('0' <= *p && *p <= '9')
+ p++;
+ if (p == str + len)
return 1;
}
+
return 0;
}