Automattic/node-canvas
View on GitHubSegmentation fault: 11 when rendering SVG with 0 size
Open
#1400 opened on Apr 4, 2019
BugHelp wanted
Description
Issue or Feature
Issue: a Segmentation fault is thrown when the canvas size is 0x0 and the width and height passed to drawImage() are also 0.
Why would I do this? Well not deliberately! Another component was passing in the size of the canvas as a string, instead of a number. But because node was SegFaulting, it was hard to trace back to what was going wrong.
Steps to Reproduce
const fs = require('fs')
const { createCanvas, loadImage } = require('canvas')
let canvas = createCanvas('600', '600')
let ctx = canvas.getContext('2d')
console.log('canvas.width: ' + canvas.width)
console.log('canvas.height: ' + canvas.height)
ctx.fillStyle = '#FF0000'
ctx.fillRect(0, 0, canvas.width, canvas.height)
const promise = loadImage('Ghostscript_Tiger.svg')
promise.then((image) => {
// Scale the SVG to fit the canvas
image.width = canvas.width
image.height = canvas.height
console.log('image.width: ' + image.width)
console.log('image.height: ' + image.height)
ctx.drawImage(
image,
0, 0,
image.width, image.height
)
}).then(() => {
const out = fs.createWriteStream('Ghostscript_Tiger-600.png')
const stream = canvas.createPNGStream()
stream.pipe(out)
out.on('finish', () => console.log('Finished'))
})
Your Environment
- Version of node-canvas: 2.4.1
- Version of node: v8.12.0
- Version of cairo: 1.16.0
- Version of Mac OS: 10.12.6