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);
 }
 
 /*