Index: src/trackerd/tracker-db-email.c =================================================================== --- src/trackerd/tracker-db-email.c (revision 1209) +++ src/trackerd/tracker-db-email.c (working copy) @@ -446,8 +446,8 @@ static inline int limit_address_count (int len) { - if (len > MAX_ADDRESSES) { - return MAX_ADDRESSES; + if (len > MAX_ADDRESSES - 1) { + return MAX_ADDRESSES - 1; } return len; @@ -603,15 +603,23 @@ GString *gstr = g_string_new (""); if (mp->addr) { + gchar *value = get_utf8 (mp->addr); - g_string_append_printf (gstr, "%s ", value); - g_free (value); + + if (value) { + g_string_append_printf (gstr, "%s ", value); + g_free (value); + } } if (mp->name) { + gchar *value = get_utf8 (mp->name); - g_string_append (gstr, value); - g_free (value); + + if (value) { + g_string_append (gstr, value); + g_free (value); + } } array[i] = g_string_free (gstr, FALSE); @@ -638,14 +646,20 @@ if (mp->addr) { gchar *value = get_utf8 (mp->addr); - g_string_append_printf (gstr, "%s ", value); - g_free (value); + + if (value) { + g_string_append_printf (gstr, "%s ", value); + g_free (value); + } } if (mp->name) { gchar *value = get_utf8 (mp->name); - g_string_append_printf (gstr, "%s ", value); - g_free (value); + + if (value) { + g_string_append_printf (gstr, "%s ", value); + g_free (value); + } } array[i] = g_string_free (gstr, FALSE); @@ -673,7 +687,12 @@ continue; } gchar *value = get_utf8 (ma->attachment_name); - array[i] = value; + + if (value) { + array[i] = value; + } else { + array[i] = g_strdup ("unknown"); + } } if (i > 0) {