diff options
author | Po Lu <luangruo@yahoo.com> | 2022-02-03 10:34:50 +0000 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2022-02-03 10:34:50 +0000 |
commit | 9b0cdf461c24e36cedda27c700febebb00b40909 (patch) | |
tree | 01dbe4ab40cdea3f36b59302b6e4cbcb22662a84 /src/haikufont.c | |
parent | d35c4ee10a549deb613f0ab2f99244e0240c4b60 (diff) | |
download | emacs-9b0cdf461c24e36cedda27c700febebb00b40909.tar.gz emacs-9b0cdf461c24e36cedda27c700febebb00b40909.tar.bz2 emacs-9b0cdf461c24e36cedda27c700febebb00b40909.zip |
* src/haikufont.c (haikufont_draw): Allocate string buffer on stack.
Diffstat (limited to 'src/haikufont.c')
-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, else { ptrdiff_t b_len = 0; - char *b = xmalloc (b_len); + char *b = alloca ((to - from + 1) * MAX_MULTIBYTE_LENGTH); for (int idx = from; idx < to; ++idx) { int len = CHAR_STRING (s->char2b[idx], mb); - b = xrealloc (b, b_len = (b_len + len)); + b_len += len; + if (len == 1) b[b_len - len] = mb[0]; else @@ -1013,7 +1014,6 @@ haikufont_draw (struct glyph_string *s, int from, int to, } BView_DrawString (view, b, b_len); - xfree (b); } unblock_input (); |