diff src/lread.c @ 19240:c962562027d4

(read1): Handle read_escape making a multibyte character.
author Richard M. Stallman <rms@gnu.org>
date Sat, 09 Aug 1997 03:44:54 +0000
parents 266915689f9e
children be0876941b71
line wrap: on
line diff
--- a/src/lread.c	Sat Aug 09 03:41:42 1997 +0000
+++ b/src/lread.c	Sat Aug 09 03:44:54 1997 +0000
@@ -1620,7 +1620,29 @@
 		end = read_buffer + read_buffer_size;
 	      }
 	    if (c == '\\')
-	      c = read_escape (readcharfun);
+	      {
+		c = read_escape (readcharfun);
+		if (! SINGLE_BYTE_CHAR_P ((c & ~CHAR_META)))
+		  {
+		    char workbuf[4];
+		    char *str = workbuf;
+		    int length;
+
+		    length = non_ascii_char_to_string (c, workbuf, &str);
+
+		    if (p + length > 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;
+		      }
+ 
+		    bcopy (str, p, length);
+		    p += length;
+		    continue;
+		  }
+	      }
 	    /* c is -1 if \ newline has just been seen */
 	    if (c == -1)
 	      {