From 0782685d43f026b2366dbacbebc79021a9df50c6 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Wed, 2 Jul 2014 00:31:59 +0900 Subject: [PATCH] * coding.c (MIN_CHARBUF_SIZE): Delete it. (MAX_CHARBUF_EXTRA_SIZE): New macro. (ALLOC_CONVERSION_WORK_AREA): Use MAX_CHARBUF_EXTRA_SIZE. --- src/ChangeLog | 6 ++++++ src/coding.c | 12 ++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2f611365fcd..ec9c0ce42fd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2014-07-01 K. Handa + + * coding.c (MIN_CHARBUF_SIZE): Delete it. + (MAX_CHARBUF_EXTRA_SIZE): New macro. + (ALLOC_CONVERSION_WORK_AREA): Use MAX_CHARBUF_EXTRA_SIZE. + 2014-06-28 K. Handa * coding.c (MAX_CHARBUF_SIZE): Renamed from CHARBUF_SIZE. diff --git a/src/coding.c b/src/coding.c index 64bad7ccbe8..e68700c099d 100644 --- a/src/coding.c +++ b/src/coding.c @@ -7266,13 +7266,17 @@ produce_charset (struct coding_system *coding, int *charbuf, ptrdiff_t pos) } #define MAX_CHARBUF_SIZE 0x4000 -#define MIN_CHARBUF_SIZE 0x10 +/* How many units decoding functions expect in coding->charbuf at + most. Currently, decode_coding_emacs_mule expects the following + size, and that is the largest value. */ +#define MAX_CHARBUF_EXTRA_SIZE ((MAX_ANNOTATION_LENGTH * 3) + 1) #define ALLOC_CONVERSION_WORK_AREA(coding, size) \ do { \ - int units = ((size) > MAX_CHARBUF_SIZE ? MAX_CHARBUF_SIZE \ - : (size) < MIN_CHARBUF_SIZE ? MIN_CHARBUF_SIZE \ - : size); \ + int units = (size) + MAX_CHARBUF_EXTRA_SIZE; \ + \ + if (units > MAX_CHARBUF_SIZE) \ + units = MAX_CHARBUF_SIZE; \ coding->charbuf = SAFE_ALLOCA ((units) * sizeof (int)); \ coding->charbuf_size = (units); \ } while (0) -- 2.39.5