diff --git a/src/document/html/renderer.c b/src/document/html/renderer.c
index 574cae88f..568bdd7ff 100644
--- a/src/document/html/renderer.c
+++ b/src/document/html/renderer.c
@@ -2207,30 +2207,27 @@ ret:
/* Clear memory to prevent bad key comparaison due to alignment
* of key fields. */
struct table_cache_entry *tce = mem_calloc(1, sizeof(*tce));
- /* A goto is used here to prevent a test or code
- * redundancy. */
- if (!tce) goto end;
- tce->key.start = start;
- tce->key.end = end;
- tce->key.align = align;
- tce->key.margin = margin;
- tce->key.width = width;
- tce->key.x = x;
- tce->key.link_num = link_num;
- copy_struct(&tce->part, part);
+ if (tce) {
+ tce->key.start = start;
+ tce->key.end = end;
+ tce->key.align = align;
+ tce->key.margin = margin;
+ tce->key.width = width;
+ tce->key.x = x;
+ tce->key.link_num = link_num;
+ copy_struct(&tce->part, part);
- if (!add_hash_item(table_cache,
- (unsigned char *) &tce->key,
- sizeof(tce->key), tce)) {
- mem_free(tce);
- } else {
- table_cache_entries++;
+ if (!add_hash_item(table_cache,
+ (unsigned char *) &tce->key,
+ sizeof(tce->key), tce)) {
+ mem_free(tce);
+ } else {
+ table_cache_entries++;
+ }
}
}
-end:
-
return part;
}