On Tue, 20 Mar 2018 15:28:24 +0100 Emre Ucan <[email protected]> wrote:
> If the constraint is an one-shot constraint, constraint > is freed in disable_pointer_constraint function. > Therefore, we should not try to read freed memory at > "switch (constraint->lifetime)" statement. > > The removed code is anyway superfluous. Because > surface destroy signal is only removed, when constraint > is an one-shot constraint. Not only superfluous, but it would corrupt the destroy listener list if re-added. A nice find. Thanks, pq > (Found by clang source code analyzer) > > Signed-off-by: Emre Ucan <[email protected]> > --- > libweston/input.c | 12 ------------ > 1 file changed, 12 deletions(-) > > diff --git a/libweston/input.c b/libweston/input.c > index 3e91c26..a9d21cb 100644 > --- a/libweston/input.c > +++ b/libweston/input.c > @@ -4577,18 +4577,6 @@ confined_pointer_grab_pointer_cancel(struct > weston_pointer_grab *grab) > container_of(grab, struct weston_pointer_constraint, grab); > > disable_pointer_constraint(constraint); > - > - /* If this is a persistent constraint, re-add the surface destroy signal > - * listener only if we are currently not destroying the surface. */ > - switch (constraint->lifetime) { > - case ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_PERSISTENT: > - if (constraint->surface->resource) > - wl_signal_add(&constraint->surface->destroy_signal, > - &constraint->surface_destroy_listener); > - break; > - case ZWP_POINTER_CONSTRAINTS_V1_LIFETIME_ONESHOT: > - break; > - } > } > > static const struct weston_pointer_grab_interface
pgptH2E44DiFU.pgp
Description: OpenPGP digital signature
_______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
