summaryrefslogtreecommitdiffstats
path: root/libdimension-python/dimension.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'libdimension-python/dimension.pyx')
-rw-r--r--libdimension-python/dimension.pyx16
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."""