summaryrefslogtreecommitdiff
path: root/src/cairo-cff-subset.c
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2021-07-21 22:21:37 +0930
committerAdrian Johnson <ajohnson@redneon.com>2021-07-21 22:21:37 +0930
commitcaf422b00bf29e3518f8dce2f57edda0f90287bd (patch)
tree5b36c8ab9fc5c21d7ac6ce527960b23a1be25ad0 /src/cairo-cff-subset.c
parentab82549f0344760988844a670133f1ad789b8a89 (diff)
downloadcairo-caf422b00bf29e3518f8dce2f57edda0f90287bd.tar.gz
cff: use correct size cast when decoding bytes to a signed int
Fixes #399
Diffstat (limited to 'src/cairo-cff-subset.c')
-rw-r--r--src/cairo-cff-subset.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c
index 62340e2a8..2b713410e 100644
--- a/src/cairo-cff-subset.c
+++ b/src/cairo-cff-subset.c
@@ -247,10 +247,10 @@ static unsigned char *
decode_integer (unsigned char *p, int *integer)
{
if (*p == 28) {
- *integer = (int)(p[1]<<8 | p[2]);
+ *integer = (int16_t)(p[1]<<8 | p[2]);
p += 3;
} else if (*p == 29) {
- *integer = (int)(((uint32_t)p[1] << 24) | (p[2] << 16) | (p[3] << 8) | p[4]);
+ *integer = (int32_t)(((uint32_t)p[1] << 24) | (p[2] << 16) | (p[3] << 8) | p[4]);
p += 5;
} else if (*p >= 32 && *p <= 246) {
*integer = *p++ - 139;