mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-05 11:21:04 -08:00
Fix bug #16576 with PRINTCHARFUN that conses output a lot.
src/print.c (print_object): Use FETCH_STRING_CHAR_ADVANCE, not STRING_CHAR_AND_LENGTH, so that if the string is relocated by GC, we still use correct addresses.
This commit is contained in:
parent
908df335d0
commit
198af6dfe2
2 changed files with 9 additions and 12 deletions
|
|
@ -1,3 +1,9 @@
|
|||
2014-01-29 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* print.c (print_object): Use FETCH_STRING_CHAR_ADVANCE, not
|
||||
STRING_CHAR_AND_LENGTH, so that if the string is relocated by GC,
|
||||
we still use correct addresses. (Bug#16576)
|
||||
|
||||
2014-01-27 K. Handa <handa@gnu.org>
|
||||
|
||||
Fix bug#16286 by the different way than revno:116158 to preserve
|
||||
|
|
|
|||
15
src/print.c
15
src/print.c
|
|
@ -1389,9 +1389,8 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
|
|||
print_string (obj, printcharfun);
|
||||
else
|
||||
{
|
||||
register ptrdiff_t i_byte;
|
||||
register ptrdiff_t i, i_byte;
|
||||
struct gcpro gcpro1;
|
||||
unsigned char *str;
|
||||
ptrdiff_t size_byte;
|
||||
/* 1 means we must ensure that the next character we output
|
||||
cannot be taken as part of a hex character escape. */
|
||||
|
|
@ -1410,23 +1409,15 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
|
|||
}
|
||||
|
||||
PRINTCHAR ('\"');
|
||||
str = SDATA (obj);
|
||||
size_byte = SBYTES (obj);
|
||||
|
||||
for (i_byte = 0; i_byte < size_byte;)
|
||||
for (i = 0, i_byte = 0; i_byte < size_byte;)
|
||||
{
|
||||
/* Here, we must convert each multi-byte form to the
|
||||
corresponding character code before handing it to PRINTCHAR. */
|
||||
int len;
|
||||
int c;
|
||||
|
||||
if (multibyte)
|
||||
{
|
||||
c = STRING_CHAR_AND_LENGTH (str + i_byte, len);
|
||||
i_byte += len;
|
||||
}
|
||||
else
|
||||
c = str[i_byte++];
|
||||
FETCH_STRING_CHAR_ADVANCE (c, obj, i, i_byte);
|
||||
|
||||
QUIT;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue