> > At the moment, we'll unconditionally release the guest QXL resources in > red_put_drawable() even if red_get_drawable() failed and did not > initialize drawable->release_info_ext properly. > This commit checks the QXLReleaseInfo in release_info_ext is non-0 > before attempting to release it. > --- > server/red-parse-qxl.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c > index dc99d1f30..80746ecbb 100644 > --- a/server/red-parse-qxl.c > +++ b/server/red-parse-qxl.c > @@ -1504,7 +1504,9 @@ void red_drawable_unref(RedDrawable *red_drawable) > if (--red_drawable->refs) { > return; > } > - red_qxl_release_resource(red_drawable->qxl, > red_drawable->release_info_ext); > + if (red_drawable->release_info_ext.info != NULL) { > + red_qxl_release_resource(red_drawable->qxl, > red_drawable->release_info_ext); > + } > red_put_drawable(red_drawable); > g_free(red_drawable); > } Would not be better not calling red_qxl_release_resource from red_put_drawable and check red->qxl instead of red_drawable->release_info_ext.info != NULL like all other calls? Looks like after these patches there are 3 different style of APIs to get/put commands from QXL, is confusing (not that previously was totally clear, I agree adding QXLInstance argument but there are still some inconsistencies). Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel