diff --git a/src/hardware/hw_cache.c b/src/hardware/hw_cache.c
index 78fc31afccceb1397b08bc40bc3a17e247ff0d89..beda40391e9d0b43ceea9b04af5b716d4e7f468f 100644
--- a/src/hardware/hw_cache.c
+++ b/src/hardware/hw_cache.c
@@ -581,8 +581,8 @@ void HWR_FreeTextureCache(void)
 
 	// free all hardware-converted graphics cached in the heap
 	// our gool is only the textures since user of the texture is the texture cache
-	Z_FreeTags(PU_HWRCACHE, PU_HWRCACHE);
-	Z_FreeTags(PU_HWRCACHE_UNLOCKED, PU_HWRCACHE_UNLOCKED);
+	Z_FreeTag(PU_HWRCACHE);
+	Z_FreeTag(PU_HWRCACHE_UNLOCKED);
 
 	// Alam: free the Z_Blocks before freeing it's users
 
@@ -629,8 +629,8 @@ void HWR_SetPalette(RGBA_t *palette)
 	// now flush data texture cache so 32 bit texture are recomputed
 	if (patchformat == GR_RGBA || textureformat == GR_RGBA)
 	{
-		Z_FreeTags(PU_HWRCACHE, PU_HWRCACHE);
-		Z_FreeTags(PU_HWRCACHE_UNLOCKED, PU_HWRCACHE_UNLOCKED);
+		Z_FreeTag(PU_HWRCACHE);
+		Z_FreeTag(PU_HWRCACHE_UNLOCKED);
 	}
 }
 
diff --git a/src/z_zone.c b/src/z_zone.c
index 4e9efef4b2522a64ad665ce3645e1bbed684325f..37ab3d5462193f0ef78c4c73dc4f6c54663a5f84 100644
--- a/src/z_zone.c
+++ b/src/z_zone.c
@@ -407,6 +407,11 @@ void Z_FreeTags(INT32 lowtag, INT32 hightag)
 	}
 }
 
+void Z_FreeTag(INT32 tagnum)
+{
+	Z_FreeTags(tagnum, tagnum);
+}
+
 //
 // Z_CheckMemCleanup
 //
diff --git a/src/z_zone.h b/src/z_zone.h
index baadb44a607696cf334576609466e9bf3593aa56..57ad158cf3ca4b7530d1ec3ee8873f1d890e8bc7 100644
--- a/src/z_zone.h
+++ b/src/z_zone.h
@@ -59,6 +59,7 @@
 #define PU_HWRPATCHINFO_UNLOCKED 103
 
 void Z_Init(void);
+void Z_FreeTag(INT32 tagnum);
 void Z_FreeTags(INT32 lowtag, INT32 hightag);
 void Z_CheckMemCleanup(void);
 void Z_CheckHeap(INT32 i);