Skip to content

Commit

Permalink
fix: Add isArray util to prevent undefined stack.stack (#1140)
Browse files Browse the repository at this point in the history
  • Loading branch information
kamilogorek authored Nov 17, 2017
1 parent 2bd838d commit 42adaf5
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/raven.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ var isErrorEvent = utils.isErrorEvent;
var isUndefined = utils.isUndefined;
var isFunction = utils.isFunction;
var isString = utils.isString;
var isArray = utils.isArray;
var isEmptyObject = utils.isEmptyObject;
var each = utils.each;
var objectMerge = utils.objectMerge;
Expand Down Expand Up @@ -481,8 +482,7 @@ Raven.prototype = {
var stack = TraceKit.computeStackTrace(ex);

// stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]
var initialCall = stack.stack[1];

var initialCall = isArray(stack.stack) && stack.stack[1];
var fileurl = (initialCall && initialCall.url) || '';

if (
Expand Down
5 changes: 5 additions & 0 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ function isString(what) {
return Object.prototype.toString.call(what) === '[object String]';
}

function isArray(what) {
return Object.prototype.toString.call(what) === '[object Array]';
}

function isEmptyObject(what) {
for (var _ in what) {
if (what.hasOwnProperty(_)) {
Expand Down Expand Up @@ -371,6 +375,7 @@ module.exports = {
isUndefined: isUndefined,
isFunction: isFunction,
isString: isString,
isArray: isArray,
isEmptyObject: isEmptyObject,
supportsErrorEvent: supportsErrorEvent,
wrappedCallback: wrappedCallback,
Expand Down
12 changes: 12 additions & 0 deletions test/utils.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ var utils = require('../src/utils');
var isUndefined = utils.isUndefined;
var isFunction = utils.isFunction;
var isString = utils.isString;
var isArray = utils.isArray;
var isObject = utils.isObject;
var isEmptyObject = utils.isEmptyObject;
var isError = utils.isError;
Expand Down Expand Up @@ -52,6 +53,17 @@ describe('utils', function() {
});
});

describe('isArray', function() {
it('should do as advertised', function() {
assert.isTrue(isArray([]));
assert.isTrue(isArray(new Array(42)));
assert.isFalse(isArray(''));
assert.isFalse(isArray({}));
assert.isFalse(isArray(undefined));
assert.isFalse(isArray(function() {}));
});
});

describe('isObject', function() {
it('should do as advertised', function() {
assert.isTrue(isObject({}));
Expand Down

0 comments on commit 42adaf5

Please sign in to comment.