changeset 38393:2f9707a444e4

(get_next_display_element): Use CHAR_STRING_NO_SIGNAL instead of CHAR_STRING which can signal an error.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 13 Jul 2001 09:30:21 +0000
parents 5b7951bd8471
children 245ae371bd4d
files src/xdisp.c
diffstat 1 files changed, 16 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Thu Jul 12 20:28:45 2001 +0000
+++ b/src/xdisp.c	Fri Jul 13 09:30:21 2001 +0000
@@ -4227,7 +4227,22 @@
 		  if (SINGLE_BYTE_CHAR_P (it->c))
 		    str[0] = it->c, len = 1;
 		  else
-		    len = CHAR_STRING (it->c, str);
+		    {
+		      len = CHAR_STRING_NO_SIGNAL (it->c, str);
+		      if (len < 0)
+			{
+			  /* It's an invalid character, which
+			     shouldn't happen actually, but due to
+			     bugs it may happen.  Let's print the char
+			     as is, there's not much meaningful we can
+			     do with it.  */
+			  str[0] = it->c;
+			  str[1] = it->c >> 8;
+			  str[2] = it->c >> 16;
+			  str[3] = it->c >> 24;
+			  len = 4;
+			}
+		    }
 
 		  for (i = 0; i < len; i++)
 		    {