bool defvarperbufferflag = false;
bool defvarflag = false;
enum global_type type = INVALID;
- static char *name;
- static ptrdiff_t name_size;
+ static char name[sizeof input_buffer];
if (c != '\n' && c != '\r')
{
if (c < 0)
goto eof;
input_buffer[i++] = c;
+ if (sizeof input_buffer <= i)
+ fatal ("identifier too long");
c = getc (infile);
}
while (! (c == ',' || c == ' ' || c == '\t'
|| c == '\n' || c == '\r'));
input_buffer[i] = '\0';
-
- if (name_size <= i)
- {
- free (name);
- name_size = i + 1;
- ptrdiff_t doubled;
- if (! INT_MULTIPLY_WRAPV (name_size, 2, &doubled)
- && doubled <= SIZE_MAX)
- name_size = doubled;
- name = xmalloc (name_size);
- }
memcpy (name, input_buffer, i + 1);
if (type == SYMBOL)