diff --git a/pdf.c b/pdf.c index b78944e186cc71e8423c052c80d3f04b656151d6..fb2f74019aa85191a06c87dc282c011ea7c45769 100644 --- a/pdf.c +++ b/pdf.c @@ -1156,15 +1156,22 @@ act_rldstring(const HParseResult *p, void *u) size_t bytes_required; uint8_t *result_bytes; - bytes_required = flattened_seq->used - 1; - result_bytes = h_arena_malloc(p->arena, sizeof(uint8_t) * bytes_required); + if (flattened_seq->used) + { + bytes_required = flattened_seq->used - 1; + result_bytes = h_arena_malloc(p->arena, sizeof(uint8_t) * bytes_required); + + for (size_t i = 0; i < flattened_seq->used-1; ++i) + { + result_bytes[i] = H_CAST_UINT(flattened_seq->elements[i]); + } - for (size_t i = 0; i < flattened_seq->used-1; ++i) + return H_MAKE_BYTES(result_bytes, bytes_required); + } + else { - result_bytes[i] = H_CAST_UINT(flattened_seq->elements[i]); + return NULL; } - - return H_MAKE_BYTES(result_bytes, bytes_required); } /*