Guard against app.getPath throwing with OS fallback

This commit is contained in:
Kevin Sawicki 2016-10-06 10:02:46 -07:00
parent fbbffe03a5
commit 16e3991ffa

View file

@ -1,6 +1,7 @@
'use strict' 'use strict'
const {spawn} = require('child_process') const {spawn} = require('child_process')
const os = require('os')
const electron = require('electron') const electron = require('electron')
const {app} = process.type === 'browser' ? electron : electron.remote const {app} = process.type === 'browser' ? electron : electron.remote
const binding = process.atomBinding('crash_reporter') const binding = process.atomBinding('crash_reporter')
@ -13,7 +14,7 @@ class CrashReporter {
this.productName = options.productName this.productName = options.productName
let {autoSubmit, companyName, extra, ignoreSystemCrashHandler, submitURL} = options let {autoSubmit, companyName, extra, ignoreSystemCrashHandler, submitURL} = options
this.tempDirectory = app.getPath('temp') this.tempDirectory = getTempPath()
if (this.productName == null) { if (this.productName == null) {
this.productName = app.getName() this.productName = app.getName()
} }
@ -72,9 +73,18 @@ class CrashReporter {
getUploadedReports () { getUploadedReports () {
const productName = this.productName != null ? this.productName : app.getName() const productName = this.productName != null ? this.productName : app.getName()
const tempDirectory = this.tempDirectory != null ? this.tempDirectory : app.getPath('temp') const tempDirectory = this.tempDirectory != null ? this.tempDirectory : getTempPath()
return binding._getUploadedReports(productName, tempDirectory) return binding._getUploadedReports(productName, tempDirectory)
} }
} }
const getTempPath = () => {
try {
return app.getPath('temp')
} catch (error) {
// app.getPath may throw so fallback to OS temp directory
return os.tmpdir()
}
}
module.exports = new CrashReporter() module.exports = new CrashReporter()