Index: i386/boot2/gui.c
===================================================================
--- i386/boot2/gui.c	(revision 2042)
+++ i386/boot2/gui.c	(working copy)
@@ -286,15 +286,12 @@
 	uint16_t	height;
 	uint8_t		*imagedata;
 
-	if ((strlen(image) + strlen(theme_name) + 20 ) > sizeof(dirspec)) {
+	if ((strlen(image) + strlen(theme_name) + 20) > sizeof(dirspec))
 		return 1;
-	}
-
-    if ((i = getImageIndexByName(image)) >= 0)
-    {
-        if (images[i].image == NULL) {
-            images[i].image = malloc(sizeof(pixmap_t));
-        }
+	if ((i = getImageIndexByName(image)) < 0)
+		return 1;
+	if (!images[i].image && !(images[i].image = malloc(sizeof(pixmap_t))))
+		return 1;
         sprintf(dirspec, "/Extra/Themes/%s/%s.png", theme_name, image);
         width = 0;
         height = 0;
@@ -323,43 +320,25 @@
                 flipRB(images[i].image);
                 return 0;
             }
-
-            return 0;
         }
 #endif
-        else if (alt_image != IMG_REQUIRED)
+        else if (alt_image != IMG_REQUIRED && is_image_loaded(alt_image))
         {
-			if (images[alt_image].image->pixels != NULL) {
-				
-				// Using the passed alternate image for non-mandatory images.
-				// We don't clone the already existing pixmap, but using its properties instead!
-				images[i].image->width = images[alt_image].image->width;
-				images[i].image->height = images[alt_image].image->height;
-				images[i].image->pixels = images[alt_image].image->pixels;
-				
-			} else {
-
-				// Unable to load or to find the image, this image not vital anyway, reseting and returning success !!
-
-				free(images[i].image);
-				images[i].image = NULL;
-			} 
-			
+            // Using the passed alternate image for non-mandatory images.
+            // We don't clone the already existing pixmap, but using its properties instead!
+            images[i].image->width = images[alt_image].image->width;
+            images[i].image->height = images[alt_image].image->height;
+            images[i].image->pixels = images[alt_image].image->pixels;
             return 0;
         }
-        else
-        {
+
+	// If we got here it's an error
 #ifndef CONFIG_EMBED_THEME
-            printf("ERROR: GUI: could not open '%s/%s.png'!\n", theme_name, image);
-			sleep(2);
+	printf("ERROR: GUI: could not open '%s/%s.png'!\n", theme_name, image);
+	sleep(2);
 #endif
-			free(images[i].image);
-			images[i].image = NULL;
-			return 1;
-
-        }      
-
-    }
+	free(images[i].image);
+	images[i].image = NULL;
 	return 1;
 }
 
@@ -372,29 +351,29 @@
 	LOADPNG(device_generic_o,               iDeviceGeneric);
 	LOADPNG(device_hfsplus,                 iDeviceGeneric);
 	LOADPNG(device_hfsplus_o,               iDeviceHFS);
-	LOADPNG(device_hfsplus_ml,              iDeviceHFS_ML);
-	LOADPNG(device_hfsplus_ml_o,            iDeviceHFS_ML_o);
-	LOADPNG(device_hfsplus_lion,            iDeviceHFS_Lion);
-	LOADPNG(device_hfsplus_lion_o,          iDeviceHFS_Lion_o);
-	LOADPNG(device_hfsplus_sl,              iDeviceHFS_SL);
-	LOADPNG(device_hfsplus_sl_o,            iDeviceHFS_SL_o);
-	LOADPNG(device_hfsplus_leo,             iDeviceHFS_Leo);
-	LOADPNG(device_hfsplus_leo_o,           iDeviceHFS_Leo_o);
-	LOADPNG(device_hfsplus_tiger,           iDeviceHFS_Tiger);
-	LOADPNG(device_hfsplus_tiger_o,         iDeviceHFS_Tiger_o);
+	LOADPNG(device_hfsplus_ml,              iDeviceHFS);
+	LOADPNG(device_hfsplus_ml_o,            iDeviceHFS_ML);
+	LOADPNG(device_hfsplus_lion,            iDeviceHFS);
+	LOADPNG(device_hfsplus_lion_o,          iDeviceHFS_Lion);
+	LOADPNG(device_hfsplus_sl,              iDeviceHFS);
+	LOADPNG(device_hfsplus_sl_o,            iDeviceHFS_SL);
+	LOADPNG(device_hfsplus_leo,             iDeviceHFS);
+	LOADPNG(device_hfsplus_leo_o,           iDeviceHFS_Leo);
+	LOADPNG(device_hfsplus_tiger,           iDeviceHFS);
+	LOADPNG(device_hfsplus_tiger_o,         iDeviceHFS_Tiger);
 
 	LOADPNG(device_hfsraid,                 iDeviceGeneric);
 	LOADPNG(device_hfsraid_o,               iDeviceHFSRAID);
-	LOADPNG(device_hfsraid_ml,              iDeviceHFSRAID_ML);
-	LOADPNG(device_hfsraid_ml_o,            iDeviceHFSRAID_ML_o);
-	LOADPNG(device_hfsraid_lion,            iDeviceHFSRAID_Lion);
-	LOADPNG(device_hfsraid_lion_o,          iDeviceHFSRAID_Lion_o);
-	LOADPNG(device_hfsraid_sl,              iDeviceHFSRAID_SL);
-	LOADPNG(device_hfsraid_sl_o,            iDeviceHFSRAID_SL_o);
-	LOADPNG(device_hfsraid_leo,             iDeviceHFSRAID_Leo);
-	LOADPNG(device_hfsraid_leo_o,           iDeviceHFSRAID_Leo_o);
-	LOADPNG(device_hfsraid_tiger,           iDeviceHFSRAID_Tiger);
-	LOADPNG(device_hfsraid_tiger_o,         iDeviceHFSRAID_Tiger_o);
+	LOADPNG(device_hfsraid_ml,              iDeviceHFSRAID);
+	LOADPNG(device_hfsraid_ml_o,            iDeviceHFSRAID_ML);
+	LOADPNG(device_hfsraid_lion,            iDeviceHFSRAID);
+	LOADPNG(device_hfsraid_lion_o,          iDeviceHFSRAID_Lion);
+	LOADPNG(device_hfsraid_sl,              iDeviceHFSRAID);
+	LOADPNG(device_hfsraid_sl_o,            iDeviceHFSRAID_SL);
+	LOADPNG(device_hfsraid_leo,             iDeviceHFSRAID);
+	LOADPNG(device_hfsraid_leo_o,           iDeviceHFSRAID_Leo);
+	LOADPNG(device_hfsraid_tiger,           iDeviceHFSRAID);
+	LOADPNG(device_hfsraid_tiger_o,         iDeviceHFSRAID_Tiger);
 	LOADPNG(device_ext3,                    iDeviceGeneric);
 	LOADPNG(device_ext3_o,                  iDeviceEXT3);
 	LOADPNG(device_freebsd,                 iDeviceGeneric);        /* FreeBSD/OpenBSD detection,nawcom's code by valv, Icon credits to blackosx  */
@@ -406,9 +385,9 @@
 	LOADPNG(device_fat,                     iDeviceGeneric);
 	LOADPNG(device_fat_o,                   iDeviceFAT);
 	LOADPNG(device_fat16,                   iDeviceFAT);
-	LOADPNG(device_fat16_o,                 iDeviceFAT_o);
+	LOADPNG(device_fat16_o,                 iDeviceFAT16);
 	LOADPNG(device_fat32,                   iDeviceFAT);
-	LOADPNG(device_fat32_o,                 iDeviceFAT_o);
+	LOADPNG(device_fat32_o,                 iDeviceFAT32);
 	LOADPNG(device_ntfs,                    iDeviceGeneric);
 	LOADPNG(device_ntfs_o,                  iDeviceNTFS);
 	LOADPNG(device_cdrom,                   iDeviceGeneric);
@@ -898,91 +877,62 @@
 	if( diskIsCDROM(device) )
 		devicetype = iDeviceCDROM;				// Use CDROM icon
 	else
-	{	
+	{
 		switch (device->part_type)
 		{
 			case kPartitionTypeHFS:
-			{				
-
-				// Use HFS or HFSRAID icon depending on bvr flags.
-				if (device->flags & kBVFlagBooter)
-				{
-                    
-					switch (device->OSVersion[3]) {
-						case '8':
-							devicetype = is_image_loaded(iDeviceHFSRAID_ML) ? iDeviceHFSRAID_ML : is_image_loaded(iDeviceHFSRAID) ? iDeviceHFSRAID  : iDeviceGeneric;
-							break;
-						case '7':
-							devicetype = is_image_loaded(iDeviceHFSRAID_Lion) ? iDeviceHFSRAID_Lion : is_image_loaded(iDeviceHFSRAID) ? iDeviceHFSRAID  : iDeviceGeneric;
-							break;
-						case '6':
-							devicetype = is_image_loaded(iDeviceHFSRAID_SL) ? iDeviceHFSRAID_SL : is_image_loaded(iDeviceHFSRAID) ? iDeviceHFSRAID  : iDeviceGeneric;
-							break;
-						case '5':
-							devicetype = is_image_loaded(iDeviceHFSRAID_Leo) ? iDeviceHFSRAID_Leo : is_image_loaded(iDeviceHFSRAID) ? iDeviceHFSRAID  : iDeviceGeneric;
-							break;
-						case '4':
-							devicetype = is_image_loaded(iDeviceHFSRAID_Tiger) ? iDeviceHFSRAID_Tiger : is_image_loaded(iDeviceHFSRAID) ? iDeviceHFSRAID  : iDeviceGeneric;
-							break;
-						default:
-							devicetype = is_image_loaded(iDeviceHFSRAID) ? iDeviceHFSRAID  : iDeviceGeneric;
-							break;
-					}
-					
-				} else {					
-
-					switch (device->OSVersion[3]) {
-						case '8':
-							devicetype = is_image_loaded(iDeviceHFS_ML) ? iDeviceHFS_ML : is_image_loaded(iDeviceHFS) ? iDeviceHFS : iDeviceGeneric;
-							break;
-						case '7':
-							devicetype = is_image_loaded(iDeviceHFS_Lion) ? iDeviceHFS_Lion : is_image_loaded(iDeviceHFS) ? iDeviceHFS : iDeviceGeneric;
-							break;
-						case '6':
-							devicetype = is_image_loaded(iDeviceHFS_SL) ? iDeviceHFS_SL : is_image_loaded(iDeviceHFS) ? iDeviceHFS : iDeviceGeneric;
-							break;
-						case '5':
-							devicetype = is_image_loaded(iDeviceHFS_Leo) ? iDeviceHFS_Leo : is_image_loaded(iDeviceHFS) ? iDeviceHFS : iDeviceGeneric;
-							break;
-						case '4':
-							devicetype = is_image_loaded(iDeviceHFS_Tiger) ? iDeviceHFS_Tiger : is_image_loaded(iDeviceHFS) ? iDeviceHFS : iDeviceGeneric;
-							break;
-						default:
-							devicetype = is_image_loaded(iDeviceHFS) ? iDeviceHFS : iDeviceGeneric;
-							break;
-					}						
-					
+			{
+				// Use HFS or HFSRAID icon depending on bvr flags. Fallbacks are handled by alt_image above.
+				switch (device->OSVersion[3]) {
+					case '8':
+						devicetype = (device->flags & kBVFlagBooter ? iDeviceHFSRAID_ML : iDeviceHFS_ML);
+						break;
+					case '7':
+						devicetype = (device->flags & kBVFlagBooter ? iDeviceHFSRAID_Lion : iDeviceHFS_Lion);
+						break;
+					case '6':
+						devicetype = (device->flags & kBVFlagBooter ? iDeviceHFSRAID_SL : iDeviceHFS_SL);
+						break;
+					case '5':
+						devicetype = (device->flags & kBVFlagBooter ? iDeviceHFSRAID_Leo : iDeviceHFS_Leo);
+						break;
+					case '4':
+						devicetype = (device->flags & kBVFlagBooter ? iDeviceHFSRAID_Tiger : iDeviceHFS_Tiger);
+						break;
+					default:
+						devicetype = (device->flags & kBVFlagBooter ? iDeviceHFSRAID : iDeviceHFS);
+						break;
 				}
 				
 				break;
 				
 			}				
 			case kPartitionTypeHPFS:
-				devicetype = is_image_loaded(iDeviceNTFS) ? iDeviceNTFS : iDeviceGeneric;		// Use HPFS / NTFS icon
+				devicetype = iDeviceNTFS;		// Use HPFS / NTFS icon
 				break;
 
 			case kPartitionTypeFAT16:
-				devicetype = is_image_loaded(iDeviceFAT16) ? iDeviceFAT16 : iDeviceGeneric;		// Use FAT16 icon
+				devicetype = iDeviceFAT16;		// Use FAT16 icon
 				break;
 
 			case kPartitionTypeFAT32:
-				devicetype = is_image_loaded(iDeviceFAT32) ? iDeviceFAT32 : iDeviceGeneric;		// Use FAT32 icon
+				devicetype = iDeviceFAT32;		// Use FAT32 icon
 				break;
 
 			case kPartitionTypeEXT3:
-				devicetype = is_image_loaded(iDeviceEXT3) ? iDeviceEXT3 : iDeviceGeneric;		// Use EXT2/3 icon
+				devicetype = iDeviceEXT3;		// Use EXT2/3 icon
 				break;
 
 			case kPartitionTypeFreeBSD:                     /* FreeBSD/OpenBSD detection,nawcom's code by valv, Icon credits to blackosx  */
-				devicetype = is_image_loaded(iDeviceFreeBSD) ? iDeviceFreeBSD : iDeviceGeneric;		// Use FreeBSD icon
+				devicetype = iDeviceFreeBSD;		// Use FreeBSD icon
 				break;
 
 			case kPartitionTypeOpenBSD:                     /* FreeBSD/OpenBSD detection,nawcom's code by valv, Icon credits to blackosx  */
-				devicetype = is_image_loaded(iDeviceOpenBSD) ? iDeviceOpenBSD : iDeviceGeneric;		// Use OpenBSD icon
+				devicetype = iDeviceOpenBSD;		// Use OpenBSD icon
 				break;
 
 			case kPartitionTypeBEFS:                        /* Haiku detection and Icon credits to scorpius  */
-				devicetype = is_image_loaded(iDeviceBEFS) ? iDeviceBEFS : iDeviceGeneric;// Use BEFS / Haiku icon
+				devicetype = iDeviceBEFS;		// Use BEFS / Haiku icon
 				break;
 
 			default:
@@ -992,14 +942,14 @@
 	}
 	
 	// Draw the selection image and use the next (device_*_o) image for the selected item.
-    if (isSelected)
+	if (isSelected)
 	{
 		blend(images[iSelection].image, buffer, centeredAt(images[iSelection].image, p));
-		devicetype++; // selec override image 
+		devicetype++; // select override image 
 	}
 
 	// draw icon
-	blend( images[devicetype].image, buffer, centeredAt( images[devicetype].image, p ));
+	blend(images[devicetype].image, buffer, centeredAt(images[devicetype].image, p));
 	
 	p.y += (images[iSelection].image->height / 2) + font_console.chars[0]->height;
 	
