* coding.c (ALLOC_CONVERSION_WORK_AREA): Prefer ptrdiff_t to int and

so avoid integer overflow if decoded gap size exceeds INT_MAX bytes.
This commit is contained in:
Dmitry Antipov 2014-07-09 14:36:35 +04:00
parent 876d043fad
commit 205ededbb2
2 changed files with 7 additions and 7 deletions

View file

@ -7273,15 +7273,12 @@ produce_charset (struct coding_system *coding, int *charbuf, ptrdiff_t pos)
#define ALLOC_CONVERSION_WORK_AREA(coding, size) \
do { \
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); \
ptrdiff_t units = min ((size) + MAX_CHARBUF_EXTRA_SIZE, \
MAX_CHARBUF_SIZE); \
coding->charbuf = SAFE_ALLOCA (units * sizeof (int)); \
coding->charbuf_size = units; \
} while (0)
static void
produce_annotation (struct coding_system *coding, ptrdiff_t pos)
{