xwayland: fix wl_array rollback when adding selection targets

Ensure mime_types and mime_types_atoms remain in sync when
wl_array_add() fails. Roll back the partially added entry and
free the allocated mime type to avoid leaks and inconsistent
state.
This commit is contained in:
YaoBing Xiao 2026-02-04 21:11:29 +08:00
parent 90f9f59041
commit d362ed1eb9

View file

@ -381,13 +381,15 @@ static bool source_get_targets(struct wlr_xwm_selection *selection,
free(mime_type);
break;
}
*mime_type_ptr = mime_type;
xcb_atom_t *atom_ptr =
wl_array_add(mime_types_atoms, sizeof(*atom_ptr));
if (atom_ptr == NULL) {
mime_types->size -= sizeof(*mime_type_ptr);
free(mime_type);
break;
}
*mime_type_ptr = mime_type;
*atom_ptr = value[i];
}
}