aboutsummaryrefslogtreecommitdiffstats
path: root/src/coding.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/coding.c')
-rw-r--r--src/coding.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/coding.c b/src/coding.c
index 99f5ed8f805..d8bee597756 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -1703,7 +1703,8 @@ decode_coding_utf_16 (coding)
1703 const unsigned char *src_end = coding->source + coding->src_bytes; 1703 const unsigned char *src_end = coding->source + coding->src_bytes;
1704 const unsigned char *src_base; 1704 const unsigned char *src_base;
1705 int *charbuf = coding->charbuf + coding->charbuf_used; 1705 int *charbuf = coding->charbuf + coding->charbuf_used;
1706 int *charbuf_end = coding->charbuf + coding->charbuf_size; 1706 /* We may produces at most 3 chars in one loop. */
1707 int *charbuf_end = coding->charbuf + coding->charbuf_size - 2;
1707 int consumed_chars = 0, consumed_chars_base = 0; 1708 int consumed_chars = 0, consumed_chars_base = 0;
1708 int multibytep = coding->src_multibyte; 1709 int multibytep = coding->src_multibyte;
1709 enum utf_bom_type bom = CODING_UTF_16_BOM (coding); 1710 enum utf_bom_type bom = CODING_UTF_16_BOM (coding);
@@ -1749,7 +1750,7 @@ decode_coding_utf_16 (coding)
1749 src_base = src; 1750 src_base = src;
1750 consumed_chars_base = consumed_chars; 1751 consumed_chars_base = consumed_chars;
1751 1752
1752 if (charbuf + 2 >= charbuf_end) 1753 if (charbuf >= charbuf_end)
1753 { 1754 {
1754 if (byte_after_cr1 >= 0) 1755 if (byte_after_cr1 >= 0)
1755 src_base -= 2; 1756 src_base -= 2;
@@ -2442,8 +2443,10 @@ decode_coding_emacs_mule (coding)
2442 const unsigned char *src_end = coding->source + coding->src_bytes; 2443 const unsigned char *src_end = coding->source + coding->src_bytes;
2443 const unsigned char *src_base; 2444 const unsigned char *src_base;
2444 int *charbuf = coding->charbuf + coding->charbuf_used; 2445 int *charbuf = coding->charbuf + coding->charbuf_used;
2446 /* We may produce two annocations (charset and composition) in one
2447 loop and one more charset annocation at the end. */
2445 int *charbuf_end 2448 int *charbuf_end
2446 = coding->charbuf + coding->charbuf_size - MAX_ANNOTATION_LENGTH; 2449 = coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 3);
2447 int consumed_chars = 0, consumed_chars_base; 2450 int consumed_chars = 0, consumed_chars_base;
2448 int multibytep = coding->src_multibyte; 2451 int multibytep = coding->src_multibyte;
2449 Lisp_Object attrs, charset_list; 2452 Lisp_Object attrs, charset_list;
@@ -3558,8 +3561,10 @@ decode_coding_iso_2022 (coding)
3558 const unsigned char *src_end = coding->source + coding->src_bytes; 3561 const unsigned char *src_end = coding->source + coding->src_bytes;
3559 const unsigned char *src_base; 3562 const unsigned char *src_base;
3560 int *charbuf = coding->charbuf + coding->charbuf_used; 3563 int *charbuf = coding->charbuf + coding->charbuf_used;
3564 /* We may produce two annocations (charset and composition) in one
3565 loop and one more charset annocation at the end. */
3561 int *charbuf_end 3566 int *charbuf_end
3562 = coding->charbuf + coding->charbuf_size - MAX_ANNOTATION_LENGTH; 3567 = coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 3);
3563 int consumed_chars = 0, consumed_chars_base; 3568 int consumed_chars = 0, consumed_chars_base;
3564 int multibytep = coding->src_multibyte; 3569 int multibytep = coding->src_multibyte;
3565 /* Charsets invoked to graphic plane 0 and 1 respectively. */ 3570 /* Charsets invoked to graphic plane 0 and 1 respectively. */
@@ -4758,8 +4763,10 @@ decode_coding_sjis (coding)
4758 const unsigned char *src_end = coding->source + coding->src_bytes; 4763 const unsigned char *src_end = coding->source + coding->src_bytes;
4759 const unsigned char *src_base; 4764 const unsigned char *src_base;
4760 int *charbuf = coding->charbuf + coding->charbuf_used; 4765 int *charbuf = coding->charbuf + coding->charbuf_used;
4766 /* We may produce one charset annocation in one loop and one more at
4767 the end. */
4761 int *charbuf_end 4768 int *charbuf_end
4762 = coding->charbuf + coding->charbuf_size - MAX_ANNOTATION_LENGTH; 4769 = coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 2);
4763 int consumed_chars = 0, consumed_chars_base; 4770 int consumed_chars = 0, consumed_chars_base;
4764 int multibytep = coding->src_multibyte; 4771 int multibytep = coding->src_multibyte;
4765 struct charset *charset_roman, *charset_kanji, *charset_kana; 4772 struct charset *charset_roman, *charset_kanji, *charset_kana;
@@ -4875,8 +4882,10 @@ decode_coding_big5 (coding)
4875 const unsigned char *src_end = coding->source + coding->src_bytes; 4882 const unsigned char *src_end = coding->source + coding->src_bytes;
4876 const unsigned char *src_base; 4883 const unsigned char *src_base;
4877 int *charbuf = coding->charbuf + coding->charbuf_used; 4884 int *charbuf = coding->charbuf + coding->charbuf_used;
4885 /* We may produce one charset annocation in one loop and one more at
4886 the end. */
4878 int *charbuf_end 4887 int *charbuf_end
4879 = coding->charbuf + coding->charbuf_size - MAX_ANNOTATION_LENGTH; 4888 = coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 2);
4880 int consumed_chars = 0, consumed_chars_base; 4889 int consumed_chars = 0, consumed_chars_base;
4881 int multibytep = coding->src_multibyte; 4890 int multibytep = coding->src_multibyte;
4882 struct charset *charset_roman, *charset_big5; 4891 struct charset *charset_roman, *charset_big5;
@@ -5549,8 +5558,10 @@ decode_coding_charset (coding)
5549 const unsigned char *src_end = coding->source + coding->src_bytes; 5558 const unsigned char *src_end = coding->source + coding->src_bytes;
5550 const unsigned char *src_base; 5559 const unsigned char *src_base;
5551 int *charbuf = coding->charbuf + coding->charbuf_used; 5560 int *charbuf = coding->charbuf + coding->charbuf_used;
5561 /* We may produce one charset annocation in one loop and one more at
5562 the end. */
5552 int *charbuf_end 5563 int *charbuf_end
5553 = coding->charbuf + coding->charbuf_size - MAX_ANNOTATION_LENGTH; 5564 = coding->charbuf + coding->charbuf_size - (MAX_ANNOTATION_LENGTH * 2);
5554 int consumed_chars = 0, consumed_chars_base; 5565 int consumed_chars = 0, consumed_chars_base;
5555 int multibytep = coding->src_multibyte; 5566 int multibytep = coding->src_multibyte;
5556 Lisp_Object attrs, charset_list, valids; 5567 Lisp_Object attrs, charset_list, valids;