diff options
Diffstat (limited to 'libdimension-python/dimension.pyx')
-rw-r--r-- | libdimension-python/dimension.pyx | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libdimension-python/dimension.pyx b/libdimension-python/dimension.pyx index b8855fe..dffa8fa 100644 --- a/libdimension-python/dimension.pyx +++ b/libdimension-python/dimension.pyx @@ -569,9 +569,19 @@ cdef class Canvas: if fclose(file) != 0: _raise_OSError() - progress = _Progress(dmnsn_png_write_canvas_async(self._canvas, file)) - progress._finalizer = finalize - return progress + cdef dmnsn_progress *progress = dmnsn_png_write_canvas_async(self._canvas, + file) + + try: + if progress == NULL: + _raise_OSError() + + ret = _Progress(progress) + ret._finalizer = finalize + return ret + except: + finalize() + raise def draw_GL(self): """Export the canvas to the current OpenGL context.""" |