diff --git a/src/lua_hudlib.c b/src/lua_hudlib.c
index 128a54dc8..9fcfcdd2e 100644
--- a/src/lua_hudlib.c
+++ b/src/lua_hudlib.c
@@ -377,12 +377,12 @@ static int libd_getSpritePatch(lua_State *L)
 	sprdef = &sprites[i];
 
 	// set frame number
-	frame = (luaL_optinteger(L, 2, 0);
+	frame = luaL_optinteger(L, 2, 0);
 	frame &= FF_FRAMEMASK; // ignore any bits that are not the actual frame, just in case
 	if (frame >= sprdef->numframes)
 		return 0;
 	// set angle number
-	sprframe = sprdef->spriteframes[frame];
+	sprframe = &sprdef->spriteframes[frame];
 	angle = luaL_optinteger(L, 3, 0);
 	if (angle >= 8)
 		return 0;
@@ -395,7 +395,8 @@ static int libd_getSpritePatch(lua_State *L)
 
 static int libd_getSprite2Patch(lua_State *L)
 {
-	UINT32 i, j; // skin number, sprite2 prefix
+	INT32 i; // skin number
+	UINT32 j; // sprite2 prefix
 	UINT32 frame = 0; // 'A'
 	UINT8 angle = 0;
 	spritedef_t *sprdef;
@@ -406,7 +407,7 @@ static int libd_getSprite2Patch(lua_State *L)
 	if (lua_isnumber(L, 1)) // find skin by number
 	{
 		i = lua_tonumber(L, 1);
-		if (i >= MAXSKINS)
+		if (i < 0 || i >= MAXSKINS)
 			return luaL_error(L, "skin number %d out of range (0 - %d)", i, MAXSKINS-1);
 		if (i >= numskins)
 			return 0;
@@ -415,7 +416,7 @@ static int libd_getSprite2Patch(lua_State *L)
 	{
 		const char *name = luaL_checkstring(L, 1);
 		for (i = 0; i < numskins; i++)
-			if (fastcmp(skins[i].name, field))
+			if (fastcmp(skins[i].name, name))
 				break;
 		if (i >= numskins)
 			return 0;
@@ -444,12 +445,12 @@ static int libd_getSprite2Patch(lua_State *L)
 	sprdef = &skins[i].sprites[j];
 
 	// set frame number
-	frame = (luaL_optinteger(L, 2, 0);
+	frame = luaL_optinteger(L, 2, 0);
 	frame &= FF_FRAMEMASK; // ignore any bits that are not the actual frame, just in case
 	if (frame >= sprdef->numframes)
 		return 0;
 	// set angle number
-	sprframe = sprdef->spriteframes[frame];
+	sprframe = &sprdef->spriteframes[frame];
 	angle = luaL_optinteger(L, 3, 0);
 	if (angle >= 8)
 		return 0;