diff --git a/pdf.c b/pdf.c
index 200dddf8071b24b77b06404b36c73bfecacc93e0..55df706a3b3b878a35eef5d05de58814c9c9b7ff 100644
--- a/pdf.c
+++ b/pdf.c
@@ -1451,6 +1451,9 @@ RunLengthDecode(const Dict *parms, HBytes b, HParser *p)
 		return NULL;
 	}
 
+	assert(res->ast && res->ast->token_type == TT_BYTES);
+	res = h_parse(p, res->ast->bytes.token, res->ast->bytes.len);
+
 	return res;
 }
 
@@ -1470,6 +1473,9 @@ ASCIIHexDecode(const Dict *parms, HBytes b, HParser *p)
 		return NULL;
 	}
 
+	assert(res->ast && res->ast->token_type == TT_BYTES);
+	res = h_parse(p, res->ast->bytes.token, res->ast->bytes.len);
+
 	return res;
 }
 
@@ -1489,6 +1495,9 @@ ASCII85Decode(const Dict *parms, HBytes b, HParser *p)
 		return NULL;
 	}
 
+	assert(res->ast && res->ast->token_type == TT_BYTES);
+	res = h_parse(p, res->ast->bytes.token, res->ast->bytes.len);
+
 	return res;
 }