diff options
author | Gerd Moellmann <gerd@gnu.org> | 2000-12-08 09:59:34 +0000 |
---|---|---|
committer | Gerd Moellmann <gerd@gnu.org> | 2000-12-08 09:59:34 +0000 |
commit | 5d65df0d39324a62140d37219f67dcdb42aafe99 (patch) | |
tree | 103341d683c05350126dc7c25ce6267cd340f433 /src/lread.c | |
parent | 23751e2577de307f57fc64734324db219f98c45d (diff) | |
download | emacs-5d65df0d39324a62140d37219f67dcdb42aafe99.tar.gz |
(read1): Change the way buffers are reallocated to be
portable and less obfuscated.
Diffstat (limited to 'src/lread.c')
-rw-r--r-- | src/lread.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/lread.c b/src/lread.c index 55663e09b25..815612da3a4 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1,5 +1,5 @@ /* Lisp parsing and input streams. - Copyright (C) 1985, 86, 87, 88, 89, 93, 94, 95, 97, 98, 1999 + Copyright (C) 1985, 86, 87, 88, 89, 93, 94, 95, 97, 98, 99, 2000 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -2120,9 +2120,10 @@ read1 (readcharfun, pch, first_in_list) { if (end - p < MAX_MULTIBYTE_LENGTH) { - char *new = (char *) xrealloc (read_buffer, read_buffer_size *= 2); - p += new - read_buffer; - read_buffer += new - read_buffer; + int offset = p - read_buffer; + read_buffer = (char *) xrealloc (read_buffer, + read_buffer_size *= 2); + p = read_buffer + offset; end = read_buffer + read_buffer_size; } @@ -2260,10 +2261,10 @@ read1 (readcharfun, pch, first_in_list) { if (end - p < MAX_MULTIBYTE_LENGTH) { - char *new = (char *) xrealloc (read_buffer, - read_buffer_size *= 2); - p += new - read_buffer; - read_buffer += new - read_buffer; + int offset = p - read_buffer; + read_buffer = (char *) xrealloc (read_buffer, + read_buffer_size *= 2); + p = read_buffer + offset; end = read_buffer + read_buffer_size; } @@ -2283,10 +2284,11 @@ read1 (readcharfun, pch, first_in_list) if (p == end) { - char *new = (char *) xrealloc (read_buffer, read_buffer_size *= 2); - p += new - read_buffer; - read_buffer += new - read_buffer; -/* end = read_buffer + read_buffer_size; */ + int offset = p - read_buffer; + read_buffer = (char *) xrealloc (read_buffer, + read_buffer_size *= 2); + p = read_buffer + offset; + end = read_buffer + read_buffer_size; } *p = 0; if (c >= 0) |