* minibuf.c (read_minibuf_noninteractive): Use ptrdiff_t, not int,
for sizes. Check for string overflow more accurately. Simplify newline removal at end; this suppresses a GCC 4.6.0 warning.
This commit is contained in:
parent
6d84508d18
commit
90532f02fd
2 changed files with 10 additions and 8 deletions
|
@ -1,5 +1,9 @@
|
|||
2011-06-23 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* minibuf.c (read_minibuf_noninteractive): Use ptrdiff_t, not int,
|
||||
for sizes. Check for string overflow more accurately.
|
||||
Simplify newline removal at end; this suppresses a GCC 4.6.0 warning.
|
||||
|
||||
* macros.c: Integer and buffer overflow fixes.
|
||||
* keyboard.h (struct keyboard.kbd_macro_bufsize):
|
||||
* macros.c (Fstart_kbd_macro, store_kbd_macro_char):
|
||||
|
|
|
@ -237,7 +237,7 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
Lisp_Object defalt,
|
||||
int allow_props, int inherit_input_method)
|
||||
{
|
||||
size_t size, len;
|
||||
ptrdiff_t size, len;
|
||||
char *line, *s;
|
||||
Lisp_Object val;
|
||||
|
||||
|
@ -247,12 +247,12 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
val = Qnil;
|
||||
size = 100;
|
||||
len = 0;
|
||||
line = (char *) xmalloc (size * sizeof *line);
|
||||
line = (char *) xmalloc (size);
|
||||
while ((s = fgets (line + len, size - len, stdin)) != NULL
|
||||
&& (len = strlen (line),
|
||||
len == size - 1 && line[len - 1] != '\n'))
|
||||
{
|
||||
if ((size_t) -1 / 2 < size)
|
||||
if (STRING_BYTES_BOUND / 2 < size)
|
||||
memory_full (SIZE_MAX);
|
||||
size *= 2;
|
||||
line = (char *) xrealloc (line, size);
|
||||
|
@ -260,11 +260,9 @@ read_minibuf_noninteractive (Lisp_Object map, Lisp_Object initial,
|
|||
|
||||
if (s)
|
||||
{
|
||||
len = strlen (line);
|
||||
|
||||
if (len > 0 && line[len - 1] == '\n')
|
||||
line[--len] = '\0';
|
||||
|
||||
char *nl = strchr (line, '\n');
|
||||
if (nl)
|
||||
*nl = '\0';
|
||||
val = build_string (line);
|
||||
xfree (line);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue