diff --git a/src/hardware/hw_cache.c b/src/hardware/hw_cache.c
index 2d4704b8b1d55bf8127fd311f70c572e6fce0bcf..328e623bd768d8e5194cd1e81500ff6678a276f4 100644
--- a/src/hardware/hw_cache.c
+++ b/src/hardware/hw_cache.c
@@ -781,9 +781,12 @@ static void FreeMipmapColormap(INT32 patchnum, void *patch)
 		// Confusing at first, but pat->mipmap->nextcolormap
 		// at the beginning of the loop is the first colormap
 		// from the linked list of colormaps
-		GLMipmap_t *next = pat->mipmap->nextcolormap;
+		GLMipmap_t *next = pat->mipmap;
+		if (!next) // No mipmap in this patch, break out of loop.
+			break;
 		// Set the first colormap
 		// to the one that comes after it
+		next = next->nextcolormap;
 		pat->mipmap->nextcolormap = next->nextcolormap;
 		// Free image data from memory
 		if (next->grInfo.data)