diff --git a/src/client/main.c b/src/client/main.c
index d5ef77a06c2110f3b1eadeaf38a176c27527f088..fc7c19f9d6a90bcbe54f0ae60f4632d9a2a02af9 100644
--- a/src/client/main.c
+++ b/src/client/main.c
@@ -402,7 +402,11 @@ int main(int argc, char *argv[])
 				ret = Dispense_AlterBalance(sock, gsTextArgs[1], atoi(gsTextArgs[2]), gsTextArgs[3]);
 			}
 		}
-		// TODO: Preserve ret if non-zero
+		// On error, quit
+		if( ret ) {
+			close(sock);
+			return ret;
+		}
 		
 		// Show user information
 		ret = Dispense_ShowUser(sock, gsTextArgs[1]);
@@ -550,7 +554,7 @@ int main(int argc, char *argv[])
 
 		// TODO: More
 		close(sock);
-		return RV_UNKNOWN_ERROR;
+		return ret;
 	}
 	// Query an item price
 	else if( strcmp(gsTextArgs[0], "iteminfo") == 0 )
@@ -1533,7 +1537,7 @@ void PopulateItemList(int Socket)
 	char	*buf;
 	 int	responseCode;
 	
-	char	*itemType, *itemStart;
+	char	*arrayType;
 	 int	count, i;
 	regmatch_t	matches[4];
 	
@@ -1556,19 +1560,16 @@ void PopulateItemList(int Socket)
 	//  202 Item <count>
 	RunRegex(&gArrayRegex, buf, 4, matches, "Malformed server response");
 		
-	itemType = &buf[ matches[2].rm_so ];	buf[ matches[2].rm_eo ] = '\0';
+	arrayType = &buf[ matches[2].rm_so ];	buf[ matches[2].rm_eo ] = '\0';
 	count = atoi( &buf[ matches[3].rm_so ] );
 		
 	// Check array type
-	if( strcmp(itemType, "Items") != 0 ) {
+	if( strcmp(arrayType, "Items") != 0 ) {
 		// What the?!
 		fprintf(stderr, "Unexpected array type, expected 'Items', got '%s'\n",
-			itemType);
+			arrayType);
 		exit(RV_UNKNOWN_ERROR);
 	}
-		
-	itemStart = &buf[ matches[3].rm_eo ];
-	
 	free(buf);
 	
 	giNumItems = count;
diff --git a/src/server/itemdb.c b/src/server/itemdb.c
index a88fad810fb32321d22aa83cada50bbfef3254d5..18a1487f8966a4b2cab0e5ec72dfa3759c645e33 100644
--- a/src/server/itemdb.c
+++ b/src/server/itemdb.c
@@ -31,7 +31,7 @@ char	*trim(char *__str);
  int	giNumItems = 0;
 tItem	*gaItems = NULL;
 time_t	gItems_LastUpdated;
-tHandler	gPseudo_Handler = {Name:"pseudo"};
+tHandler	gPseudo_Handler = {.Name="pseudo"};
 tHandler	*gaHandlers[] = {&gPseudo_Handler, &gCoke_Handler, &gSnack_Handler, &gDoor_Handler};
  int	giNumHandlers = sizeof(gaHandlers)/sizeof(gaHandlers[0]);
 char	*gsItemListFile = DEFAULT_ITEM_FILE;
diff --git a/src/server/server.c b/src/server/server.c
index 1f813d4c577d87f0ccb0e61d24d7b664069aab8e..b34d93d731b643dfa99ee734332807cbf4682f96 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -728,7 +728,7 @@ void Server_Cmd_DISPENSE(tClient *Client, char *Args)
 	case 1:	sendf(Client->Socket, "501 Unable to dispense\n");	return ;
 	case 2:	sendf(Client->Socket, "402 Poor You\n");	return ;
 	default:
-		sendf(Client->Socket, "500 Dispense Error\n");
+		sendf(Client->Socket, "500 Dispense Error (%i)\n", ret);
 		return ;
 	}
 }