diff --git a/src/r_things.c b/src/r_things.c
index 67a45a76e4681be7d94e04e63737ae3d1e97b51a..0382596f16bc5f1c17b84d5d2e6ae8ad9f259f3b 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -2306,7 +2306,7 @@ void R_DrawMasked(void)
 // ==========================================================================
 
 INT32 numskins = 0;
-skin_t skins[MAXSKINS+1];
+skin_t skins[MAXSKINS];
 // FIXTHIS: don't work because it must be inistilised before the config load
 //#define SKINVALUES
 #ifdef SKINVALUES
@@ -2559,7 +2559,7 @@ void R_AddSkins(UINT16 wadnum)
 		// advance by default
 		lastlump = lump + 1;
 
-		if (numskins > MAXSKINS)
+		if (numskins >= MAXSKINS)
 		{
 			CONS_Debug(DBG_RENDER, "ignored skin (%d skins maximum)\n", MAXSKINS);
 			continue; // so we know how many skins couldn't be added
diff --git a/src/r_things.h b/src/r_things.h
index 6614e0aa4b8c3a1d91d01dd38d2e17b58dd75bb6..2823c3894e1b40b98b9c4310b8eb8a074e40036d 100644
--- a/src/r_things.h
+++ b/src/r_things.h
@@ -180,7 +180,7 @@ typedef struct drawnode_s
 } drawnode_t;
 
 extern INT32 numskins;
-extern skin_t skins[MAXSKINS + 1];
+extern skin_t skins[MAXSKINS];
 
 void SetPlayerSkin(INT32 playernum,const char *skinname);
 void SetPlayerSkinByNum(INT32 playernum,INT32 skinnum); // Tails 03-16-2002