Automattic / Automattic/node-canvas
Assertion failure when drawing after calling canvas.toBuffer() for PDF or SVG canvas
- Dominant language
- JavaScript
- Stars
- 10.7k
- Forks
- 1.2k
- Avg merge
- 4d 8h
- Merged PRs (30d)
- 1
Description
## Steps to Reproduce
```js
const canvas = createCanvas(200,200,"svg")
const ctx = canvas.getContext("2d");
canvas.toBuffer()
ctx.fillRect(10,10,100,100)
canvas.toBuffer()
```
results in
```
File: cairo-surface.c, Line 385
Expression: ! surface->finished
```
`toBuffer` has a call to `cairo_surface_finish`. *After calling cairo_surface_finish() the only valid operations on a surface are getting and setting user, referencing and destroying, and flushing and finishing it.*
We should at least catch that failure so the process doesn't crash. I don't see a way to actually let the canvas continue to be usable for drawing though. (Thought there might be an easy way to copy the content, but not seeing one.)
## Your Environment
* Version of node-canvas (e.g. 1.4.0): master @ b10d204
* Environment (e.g. node 4.2.0 on Mac OS X 10.8): node 8.x, Win10 x64
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.