From db78c9b75e1574ec87f1e7ab8e8e6c835744bf2d Mon Sep 17 00:00:00 2001 From: Aarti Parikh Date: Tue, 21 Jun 2016 17:47:08 -0700 Subject: [PATCH] Take care to not dereference the original image a second time --- vips.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/vips.go b/vips.go index ba68cba..6b74199 100644 --- a/vips.go +++ b/vips.go @@ -318,7 +318,12 @@ func vipsSave(image *C.VipsImage, o vipsSaveOptions) ([]byte, error) { if err != nil { return nil, err } - defer C.g_object_unref(C.gpointer(tmpImage)) + //When an image has an unsupported color space, vipsPreSave returns the pointer of the image passed to it unmodified. + //When this occurs, we must take care to not dereference the original image a second time; + //we may otherwise erroneously free the object twice + if tmpImage != image { + defer C.g_object_unref(C.gpointer(tmpImage)) + } length := C.size_t(0) saveErr := C.int(0)