drm_format_set_intersect: Require initialized dst and remove assert

The usages in linux_dmabuf zero out the dst before passing it so this
change should be fine.
This commit is contained in:
Alexander Orzechowski 2023-05-04 14:16:55 -04:00 committed by Simon Ser
parent 1ee75786b4
commit 5adb1be3a7
2 changed files with 3 additions and 3 deletions

View File

@ -73,7 +73,8 @@ bool wlr_drm_format_set_add(struct wlr_drm_format_set *set, uint32_t format,
/** /**
* Intersect two DRM format sets `a` and `b`, storing in the destination set * Intersect two DRM format sets `a` and `b`, storing in the destination set
* `dst` the format + modifier pairs which are in both source sets. * `dst` the format + modifier pairs which are in both source sets. The `dst`
* must either be zeroed or initialized with other state to be replaced.
* *
* Returns false on failure or when the intersection is empty. * Returns false on failure or when the intersection is empty.
*/ */

View File

@ -205,8 +205,6 @@ struct wlr_drm_format *wlr_drm_format_intersect(
bool wlr_drm_format_set_intersect(struct wlr_drm_format_set *dst, bool wlr_drm_format_set_intersect(struct wlr_drm_format_set *dst,
const struct wlr_drm_format_set *a, const struct wlr_drm_format_set *b) { const struct wlr_drm_format_set *a, const struct wlr_drm_format_set *b) {
assert(dst != a && dst != b);
struct wlr_drm_format_set out = {0}; struct wlr_drm_format_set out = {0};
out.capacity = a->len < b->len ? a->len : b->len; out.capacity = a->len < b->len ? a->len : b->len;
out.formats = calloc(out.capacity, sizeof(struct wlr_drm_format *)); out.formats = calloc(out.capacity, sizeof(struct wlr_drm_format *));
@ -237,6 +235,7 @@ bool wlr_drm_format_set_intersect(struct wlr_drm_format_set *dst,
return false; return false;
} }
wlr_drm_format_set_finish(dst);
*dst = out; *dst = out;
return true; return true;
} }