aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/print.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/print.c b/src/print.c
index 49a0610860e..2b1e046336d 100644
--- a/src/print.c
+++ b/src/print.c
@@ -589,8 +589,8 @@ print_string (string, printcharfun)
589 /* Here, we must convert each multi-byte form to the 589 /* Here, we must convert each multi-byte form to the
590 corresponding character code before handing it to PRINTCHAR. */ 590 corresponding character code before handing it to PRINTCHAR. */
591 int len; 591 int len;
592 int ch = STRING_CHAR_AND_LENGTH (XSTRING (string)->data + i, 592 int ch = STRING_CHAR_AND_CHAR_LENGTH (XSTRING (string)->data + i,
593 size_byte - i, len); 593 size_byte - i, len);
594 594
595 PRINTCHAR (ch); 595 PRINTCHAR (ch);
596 i += len; 596 i += len;
@@ -1188,6 +1188,7 @@ print (obj, printcharfun, escapeflag)
1188 register int i, i_byte; 1188 register int i, i_byte;
1189 register unsigned char c; 1189 register unsigned char c;
1190 struct gcpro gcpro1; 1190 struct gcpro gcpro1;
1191 unsigned char *str;
1191 int size_byte; 1192 int size_byte;
1192 /* 1 means we must ensure that the next character we output 1193 /* 1 means we must ensure that the next character we output
1193 cannot be taken as part of a hex character escape. */ 1194 cannot be taken as part of a hex character escape. */
@@ -1204,6 +1205,7 @@ print (obj, printcharfun, escapeflag)
1204#endif 1205#endif
1205 1206
1206 PRINTCHAR ('\"'); 1207 PRINTCHAR ('\"');
1208 str = XSTRING (obj)->data;
1207 size_byte = STRING_BYTES (XSTRING (obj)); 1209 size_byte = STRING_BYTES (XSTRING (obj));
1208 1210
1209 for (i = 0, i_byte = 0; i_byte < size_byte;) 1211 for (i = 0, i_byte = 0; i_byte < size_byte;)
@@ -1214,9 +1216,13 @@ print (obj, printcharfun, escapeflag)
1214 int c; 1216 int c;
1215 1217
1216 if (STRING_MULTIBYTE (obj)) 1218 if (STRING_MULTIBYTE (obj))
1217 FETCH_STRING_CHAR_ADVANCE (c, obj, i, i_byte); 1219 {
1220 c = STRING_CHAR_AND_CHAR_LENGTH (str + i_byte,
1221 size_byte - i_byte, len);
1222 i_byte += len;
1223 }
1218 else 1224 else
1219 c = XSTRING (obj)->data[i_byte++]; 1225 c = str[i_byte++];
1220 1226
1221 QUIT; 1227 QUIT;
1222 1228