changeset 20585:15deff6b2848

(read_minibuf): Handle bytes vs chars when checking for junk at end of expression.
author Richard M. Stallman <rms@gnu.org>
date Mon, 05 Jan 1998 17:14:29 +0000
parents 24e567feaf18
children 90d6a75210d6
files src/minibuf.c
diffstat 1 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/minibuf.c	Mon Jan 05 06:58:06 1998 +0000
+++ b/src/minibuf.c	Mon Jan 05 17:14:29 1998 +0000
@@ -470,12 +470,22 @@
     {
       Lisp_Object expr_and_pos;
       unsigned char *p;
+      int pos;
 
       expr_and_pos = Fread_from_string (val, Qnil, Qnil);
-      /* Ignore trailing whitespace; any other trailing junk is an error.  */
-      for (p = XSTRING (val)->data + XINT (Fcdr (expr_and_pos)); *p; p++)
-	if (*p != ' ' && *p != '\t' && *p != '\n')
-	  error ("Trailing garbage following expression");
+      pos = XINT (Fcdr (expr_and_pos));
+      if (pos != XSTRING (val)->size)
+	{
+	  /* Ignore trailing whitespace; any other trailing junk is an error.  */
+	  int i;
+	  pos = string_char_to_byte (val, pos);
+	  for (i = pos; i < XSTRING (val)->size_byte; i++)
+	    {
+	      int c = XSTRING (val)->data[i];
+	      if (c != ' ' && c != '\t' && c != '\n')
+		error ("Trailing garbage following expression");
+	    }
+	}
       val = Fcar (expr_and_pos);
     }