diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c
index 6f9863406105e54e7f5cb05ef7e5fd3893ec6684..81e20f0699fbeaa5743f423b11b404e97b731e83 100644
--- a/src/hardware/hw_md2.c
+++ b/src/hardware/hw_md2.c
@@ -492,7 +492,7 @@ void HWR_InitModels(void)
 	CONS_Printf("HWR_InitModels()...\n");
 
 	if (numskins && md2_playermodels == NULL)
-		md2_playermodels = Z_Malloc(sizeof(md2_t), PU_STATIC, NULL);
+		md2_playermodels = Z_Malloc(sizeof(md2_t) * numskins, PU_STATIC, NULL);
 
 	for (s = 0; s < numskins; s++)
 	{
diff --git a/src/hardware/hw_model.c b/src/hardware/hw_model.c
index 86e2a0c7043634ce98b991fcc6646d365c3c09b9..52f9ce6eaeebd0308614de24d7f5065a2e60c850 100644
--- a/src/hardware/hw_model.c
+++ b/src/hardware/hw_model.c
@@ -239,11 +239,13 @@ void HWR_ReloadModels(void)
 	size_t i;
 	INT32 s;
 
-	for (s = 0; s < numskins; s++)
-	{
-		if (md2_playermodels[s].model)
-			LoadModelSprite2(md2_playermodels[s].model);
-	}
+	if (md2_playermodels != NULL)
+		for (s = 0; s < numskins; s++)
+		{
+			CONS_Printf("%u\n", s);
+			if (md2_playermodels[s].model)
+				LoadModelSprite2(md2_playermodels[s].model);
+		}
 
 	for (i = 0; i < NUMSPRITES; i++)
 	{