Skip to content

Commit e3349ae

Browse files
committed
Re-fix renderers outliving underlying streams.
e.g. `figure(layout="constrained"); imshow([[0, 1]], rasterized=True); savefig("/tmp/test.pdf")`
1 parent 925e068 commit e3349ae

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/mplcairo/base.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,8 @@ def _print_vector(self, renderer_factory,
286286
self.figure.draw(renderer)
287287
except Exception as exc:
288288
draw_raises_done = type(exc).__name__ == "Done"
289-
raise
289+
if not draw_raises_done: # Else, will be re-raised below.
290+
raise
290291
finally:
291292
# _finish() corresponds finalize() in Matplotlib's PDF and SVG
292293
# backends; it is inlined in Matplotlib's PS backend. It must
@@ -302,7 +303,7 @@ def _print_vector(self, renderer_factory,
302303
if draw_raises_done:
303304
renderer = renderer_factory(None, *self.figure.bbox.size, dpi)
304305
with _LOCK:
305-
self.figure.draw(renderer)
306+
self.figure.draw(renderer) # Should raise Done().
306307

307308
print_pdf = partialmethod(
308309
_print_vector, GraphicsContextRendererCairo._for_pdf_output)

0 commit comments

Comments
 (0)