Skip to content

Commit b087cde

Browse files
committed
Prevent the callback from getting called twice.
1 parent d8b894b commit b087cde

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

lib/pdf.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ PDF.prototype.toFile = function PdfToFile (filename, callback) {
8484
}
8585

8686
PDF.prototype.exec = function PdfExec (callback) {
87+
var callbacked = false
8788
var child = childprocess.spawn(this.options.phantomPath, [].concat(this.options.phantomArgs, [this.script]))
8889
var stdout = []
8990
var stderr = []
@@ -105,25 +106,29 @@ PDF.prototype.exec = function PdfExec (callback) {
105106
return child.kill()
106107
})
107108

108-
child.on('error', function (error) {
109+
function exit (err, data) {
110+
if (callbacked) return
111+
callbacked = true
109112
clearTimeout(timeout)
110-
return callback(error)
111-
})
113+
if (err) return callback(err)
114+
return callback(null, data)
115+
}
116+
117+
child.on('error', exit)
112118

113119
child.on('exit', function (code) {
114-
clearTimeout(timeout)
115120
if (code || stderr.length) {
116121
var err = new Error(Buffer.concat(stderr).toString() || 'html-pdf: Unknown Error')
117-
return callback(err)
122+
return exit(err)
118123
} else {
119124
try {
120125
var buff = Buffer.concat(stdout).toString()
121126
var data = (buff) != null ? buff.trim() : undefined
122127
data = JSON.parse(data)
123128
} catch (err) {
124-
return callback(err)
129+
return exit(err)
125130
}
126-
return callback(null, data)
131+
return exit(null, data)
127132
}
128133
})
129134

0 commit comments

Comments
 (0)