--- gjs-1.34.0/modules/cairo-context.c 2012-06-05 18:03:29.000000000 +0200 +++ gjs-1.34.0/modules/cairo-context.c 2013-01-23 22:04:08.000000000 +0100 @@ -313,7 +313,9 @@ gjs_cairo_context_finalize(JSContext *co if (priv == NULL) return; - cairo_destroy(priv->cr); + if (priv->cr != NULL) + cairo_destroy(priv->cr); + g_slice_free(GjsCairoContext, priv); } @@ -403,6 +405,23 @@ _GJS_CAIRO_CONTEXT_DEFINE_FUNC2FFAFF(use static JSBool +dispose_func(JSContext *context, + unsigned argc, + jsval *vp) +{ + JSObject *obj = JS_THIS_OBJECT(context, vp); + GjsCairoContext *priv; + + priv = priv_from_js(context, obj); + if (priv->cr != NULL) { + cairo_destroy(priv->cr); + priv->cr = NULL; + } + JS_SET_RVAL(context, vp, JSVAL_VOID); + return JS_TRUE; +} + +static JSBool appendPath_func(JSContext *context, uintN argc, jsval *vp) @@ -852,6 +871,7 @@ getGroupTarget_func(JSContext *context, } static JSFunctionSpec gjs_cairo_context_proto_funcs[] = { + { "$dispose", (JSNative)dispose_func, 0, 0 }, { "appendPath", (JSNative)appendPath_func, 0, 0}, { "arc", (JSNative)arc_func, 0, 0 }, { "arcNegative", (JSNative)arcNegative_func, 0, 0 },