The function, as written, returned that the destination list
changed even in cases where both flag lists were empty. This
made for example IMAPx report that each message in a folder
hanged, even there did not change any.
CamelFlag **from)
{
CamelFlag *flag, *tmp;
- gint changed = FALSE;
+ gboolean changed = FALSE;
if (*to == NULL && from == NULL)
return FALSE;
while (flag->next) {
tmp = flag->next;
if (!camel_flag_get (from, tmp->name)) {
+ if (*tmp->name)
+ changed = TRUE;
flag->next = tmp->next;
g_free (tmp);
- changed = TRUE;
} else {
flag = tmp;
}
}
- /* Add any new flags */
+ /* Add any new non-empty flags */
flag = *from;
while (flag) {
- changed |= camel_flag_set (to, flag->name, TRUE);
+ if (*flag->name)
+ changed |= camel_flag_set (to, flag->name, TRUE);
flag = flag->next;
}