Index: Slim/Buttons/Common.pm
===================================================================
--- Slim/Buttons/Common.pm	(revision 9957)
+++ Slim/Buttons/Common.pm	(working copy)
@@ -737,29 +737,37 @@
 			if ($list) {
 			
 				my $obj = $list->[$client->modeParam('listIndex')];
+				my $title;
+				my $url;
 				
 				if (blessed($obj) && $obj->can('url')) {
+					$url = $obj->url;
+				} elsif (ref($obj) eq 'HASH') {
+					$url = $obj->{'url'};
+				}
+				
+				if (blessed($obj) && $obj->can('name')) {
+					$title = $obj->name;
+				}elsif (ref($obj) eq 'HASH') {
+					$title = $obj->{'name'};
+				} else {
+					$title = Slim::Music::Info::standardTitle($client, $obj);
+				}
 
-					my $title;
-
-					if ($obj->can('name')) {
-						$title = $obj->name;
-					} else {
-						$title = Slim::Music::Info::standardTitle($client, $obj);
-					}
-	
-					if ($title) {
-						Slim::Utils::Favorites->clientAdd($client, $obj, $title);
-						$client->showBriefly($client->string('FAVORITES_ADDING'), $title);
-					}
-
+				if ($url && $title) {
+					Slim::Utils::Favorites->clientAdd($client, $url, $title);
+					$client->showBriefly($client->string('FAVORITES_ADDING'), $title);
 				} else {
 
-					$::d_favorites && msg("list item is not an object, not adding favorite\n");
+					$::d_favorites && msg("list item is missing url or title, not adding favorite\n");
 					$::d_favorites && msg(Data::Dumper::Dumper($obj));
 				}
-			}			
+			} else {
 
+				$::d_favorites && msg("Favorites: no valid list found!\n");
+				$::d_favorites && Slim::Utils::Misc::bt();
+			}
+
 		} elsif (mode($client) ne 'FAVORITES') {
 
 			setMode($client, 'home');