diff options
| author | Po Lu | 2022-02-03 10:34:50 +0000 |
|---|---|---|
| committer | Po Lu | 2022-02-03 10:34:50 +0000 |
| commit | 9b0cdf461c24e36cedda27c700febebb00b40909 (patch) | |
| tree | 01dbe4ab40cdea3f36b59302b6e4cbcb22662a84 | |
| parent | d35c4ee10a549deb613f0ab2f99244e0240c4b60 (diff) | |
| download | emacs-9b0cdf461c24e36cedda27c700febebb00b40909.tar.gz emacs-9b0cdf461c24e36cedda27c700febebb00b40909.zip | |
* src/haikufont.c (haikufont_draw): Allocate string buffer on stack.
| -rw-r--r-- | src/haikufont.c | 6 |
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 (); |