# HG changeset patch # User Gerd Moellmann # Date 976269592 0 # Node ID 62a349fc3d3ceaa10807faf30816eafc0cb74635 # Parent 020c1a0abaf67b5a7a8bfa1cf9e15a6e428d5fcf (Fsubstitute_command_keys): Change the way buffers are reallocated so that it is portable. diff -r 020c1a0abaf6 -r 62a349fc3d3c src/doc.c --- a/src/doc.c Fri Dec 08 09:59:34 2000 +0000 +++ b/src/doc.c Fri Dec 08 09:59:52 2000 +0000 @@ -313,6 +313,8 @@ Lisp_Object funcar; Lisp_Object tem, doc; + doc = Qnil; + if (SYMBOLP (function) && (tem = Fget (function, Qfunction_documentation), !NILP (tem))) @@ -587,7 +589,6 @@ register unsigned char *bufp; int idx; int bsize; - unsigned char *new; Lisp_Object tem; Lisp_Object keymap; unsigned char *start; @@ -686,9 +687,9 @@ if (NILP (tem)) /* but not on any keys */ { - new = (unsigned char *) xrealloc (buf, bsize += 4); - bufp += new - buf; - buf = new; + int offset = bufp - buf; + buf = (unsigned char *) xrealloc (buf, bsize += 4); + bufp = buf + offset; bcopy ("M-x ", bufp, 4); bufp += 4; nchars += 4; @@ -771,14 +772,16 @@ length = XSTRING (tem)->size; length_byte = STRING_BYTES (XSTRING (tem)); subst: - new = (unsigned char *) xrealloc (buf, bsize += length_byte); - bufp += new - buf; - buf = new; - bcopy (start, bufp, length_byte); - bufp += length_byte; - nchars += length; - /* Check STRING again in case gc relocated it. */ - strp = (unsigned char *) XSTRING (string)->data + idx; + { + int offset = bufp - buf; + buf = (unsigned char *) xrealloc (buf, bsize += length_byte); + bufp = buf + offset; + bcopy (start, bufp, length_byte); + bufp += length_byte; + nchars += length; + /* Check STRING again in case gc relocated it. */ + strp = (unsigned char *) XSTRING (string)->data + idx; + } } else if (! multibyte) /* just copy other chars */ *bufp++ = *strp++, nchars++;