aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPo Lu2022-02-03 10:34:50 +0000
committerPo Lu2022-02-03 10:34:50 +0000
commit9b0cdf461c24e36cedda27c700febebb00b40909 (patch)
tree01dbe4ab40cdea3f36b59302b6e4cbcb22662a84
parentd35c4ee10a549deb613f0ab2f99244e0240c4b60 (diff)
downloademacs-9b0cdf461c24e36cedda27c700febebb00b40909.tar.gz
emacs-9b0cdf461c24e36cedda27c700febebb00b40909.zip
* src/haikufont.c (haikufont_draw): Allocate string buffer on stack.
-rw-r--r--src/haikufont.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/haikufont.c b/src/haikufont.c
index 67b1113e44c..1ef5f54c9aa 100644
--- a/src/haikufont.c
+++ b/src/haikufont.c
@@ -1000,12 +1000,13 @@ haikufont_draw (struct glyph_string *s, int from, int to,
1000 else 1000 else
1001 { 1001 {
1002 ptrdiff_t b_len = 0; 1002 ptrdiff_t b_len = 0;
1003 char *b = xmalloc (b_len); 1003 char *b = alloca ((to - from + 1) * MAX_MULTIBYTE_LENGTH);
1004 1004
1005 for (int idx = from; idx < to; ++idx) 1005 for (int idx = from; idx < to; ++idx)
1006 { 1006 {
1007 int len = CHAR_STRING (s->char2b[idx], mb); 1007 int len = CHAR_STRING (s->char2b[idx], mb);
1008 b = xrealloc (b, b_len = (b_len + len)); 1008 b_len += len;
1009
1009 if (len == 1) 1010 if (len == 1)
1010 b[b_len - len] = mb[0]; 1011 b[b_len - len] = mb[0];
1011 else 1012 else
@@ -1013,7 +1014,6 @@ haikufont_draw (struct glyph_string *s, int from, int to,
1013 } 1014 }
1014 1015
1015 BView_DrawString (view, b, b_len); 1016 BView_DrawString (view, b, b_len);
1016 xfree (b);
1017 } 1017 }
1018 1018
1019 unblock_input (); 1019 unblock_input ();