Index: program/include/rcube_contacts.php
===================================================================
--- program/include/rcube_contacts.php	(revision e848180aaa9640de871796ca1a3e4f8110701fd6)
+++ program/include/rcube_contacts.php	(revision 445a4ca04dfcd255f9d89ee76757b04c2d87bbfc)
@@ -201,8 +201,11 @@
             else
                 $sql_arr['email'] = preg_split('/,\s*/', $sql_arr['email']);
-            
+
             // make sure we have a name to display
-            if (empty($sql_arr['name']))
+            if (empty($sql_arr['name'])) {
+                if (empty($sql_arr['email']))
+                  $sql_arr['email'] = $this->get_col_values('email', $sql_arr, true);
                 $sql_arr['name'] = $sql_arr['email'][0];
+            }
 
             $this->result->add($sql_arr);
Index: program/steps/addressbook/func.inc
===================================================================
--- program/steps/addressbook/func.inc	(revision e848180aaa9640de871796ca1a3e4f8110701fd6)
+++ program/steps/addressbook/func.inc	(revision 445a4ca04dfcd255f9d89ee76757b04c2d87bbfc)
@@ -349,5 +349,5 @@
 
             // unset display name if it is composed from name parts (same composition function as in save.inc)
-            if ($record['name'] == rcube_addressbook::compose_display_name(array('name' => '') + $record))
+            if ($record['name'] == rcube_addressbook::compose_display_name(array('name' => '') + (array)$record))
               unset($record['name']);
 
