----- Original Message ----- > Add defensive g_return[_val]_if_fail(SPICE_IS_DISPLAY()) to all public API > --- > gtk/spice-widget.c | 34 ++++++++++++++++++++++++++++------ > 1 file changed, 28 insertions(+), 6 deletions(-) > > diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c > index 8b5fa59..014d2fb 100644 > --- a/gtk/spice-widget.c > +++ b/gtk/spice-widget.c > @@ -662,7 +662,11 @@ spice_display_constructor(GType gtype, > **/ > void spice_display_set_grab_keys(SpiceDisplay *display, SpiceGrabSequence > *seq) > { > - SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); > + SpiceDisplayPrivate *d; > + > + g_return_if_fail(SPICE_IS_DISPLAY(display)); > + > + d = SPICE_DISPLAY_GET_PRIVATE(display); Thanks for that patch, but now that you change the check above, you can actually just do "d = display->priv" to avoid a double type check. > g_return_if_fail(d != NULL); > > if (d->grabseq) { > @@ -721,7 +725,11 @@ static LRESULT CALLBACK keyboard_hook_cb(int code, > WPARAM wparam, LPARAM lparam) > **/ > SpiceGrabSequence *spice_display_get_grab_keys(SpiceDisplay *display) > { > - SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); > + SpiceDisplayPrivate *d; > + > + g_return_val_if_fail(SPICE_IS_DISPLAY(display), NULL); > + > + d = SPICE_DISPLAY_GET_PRIVATE(display); > g_return_val_if_fail(d != NULL, NULL); > > return d->grabseq; > @@ -1406,7 +1414,7 @@ void spice_display_send_keys(SpiceDisplay *display, > const guint *keyvals, > { > int i; > > - g_return_if_fail(SPICE_DISPLAY(display) != NULL); > + g_return_if_fail(SPICE_IS_DISPLAY(display)); > g_return_if_fail(keyvals != NULL); > > SPICE_DEBUG("%s", __FUNCTION__); > @@ -2519,6 +2527,8 @@ SpiceDisplay* > spice_display_new_with_monitor(SpiceSession *session, gint channel > **/ > void spice_display_mouse_ungrab(SpiceDisplay *display) > { > + g_return_if_fail(SPICE_IS_DISPLAY(display)); > + > try_mouse_ungrab(display); > } > > @@ -2532,7 +2542,11 @@ void spice_display_mouse_ungrab(SpiceDisplay *display) > **/ > void spice_display_copy_to_guest(SpiceDisplay *display) > { > - SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); > + SpiceDisplayPrivate *d; > + > + g_return_if_fail(SPICE_IS_DISPLAY(display)); > + > + d = SPICE_DISPLAY_GET_PRIVATE(display); > > g_return_if_fail(d->gtk_session != NULL); > > @@ -2549,7 +2563,11 @@ void spice_display_copy_to_guest(SpiceDisplay > *display) > **/ > void spice_display_paste_from_guest(SpiceDisplay *display) > { > - SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); > + SpiceDisplayPrivate *d; > + > + g_return_if_fail(SPICE_IS_DISPLAY(display)); > + > + d = SPICE_DISPLAY_GET_PRIVATE(display); > > g_return_if_fail(d->gtk_session != NULL); > > @@ -2566,11 +2584,15 @@ void spice_display_paste_from_guest(SpiceDisplay > *display) > **/ > GdkPixbuf *spice_display_get_pixbuf(SpiceDisplay *display) > { > - SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display); > + SpiceDisplayPrivate *d; > GdkPixbuf *pixbuf; > int x, y; > guchar *src, *data, *dest; > > + g_return_val_if_fail(SPICE_IS_DISPLAY(display), NULL); > + > + d = SPICE_DISPLAY_GET_PRIVATE(display); > + > g_return_val_if_fail(d != NULL, NULL); > /* TODO: ensure d->data has been exposed? */ ack otherwsie > g_return_val_if_fail(d->data != NULL, NULL); > -- > 1.8.3.1 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel