From df21c270fa737f335329fb9e75048b0ce26aa37d Mon Sep 17 00:00:00 2001 From: Dan Vanderkam Date: Wed, 25 Jul 2012 13:44:45 -0400 Subject: [PATCH] tolerate failures in stacktrace.js (which happen in Safari) --- dygraph-utils.js | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/dygraph-utils.js b/dygraph-utils.js index d3a31d5..b73475d 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -51,20 +51,24 @@ Dygraph.DOT_DASH_LINE = [7, 2, 2, 2]; Dygraph.log = function(severity, message) { var st; if (typeof(printStackTrace) != 'undefined') { - // Remove uninteresting bits: logging functions and paths. - st = printStackTrace({guess:false}); - while (st[0].indexOf("stacktrace") != -1) { - st.splice(0, 1); - } + try { + // Remove uninteresting bits: logging functions and paths. + st = printStackTrace({guess:false}); + while (st[0].indexOf("stacktrace") != -1) { + st.splice(0, 1); + } - st.splice(0, 2); - for (var i = 0; i < st.length; i++) { - st[i] = st[i].replace(/\([^)]*\/(.*)\)/, '@$1') - .replace(/\@.*\/([^\/]*)/, '@$1') - .replace('[object Object].', ''); + st.splice(0, 2); + for (var i = 0; i < st.length; i++) { + st[i] = st[i].replace(/\([^)]*\/(.*)\)/, '@$1') + .replace(/\@.*\/([^\/]*)/, '@$1') + .replace('[object Object].', ''); + } + var top_msg = st.splice(0, 1)[0]; + message += ' (' + top_msg.replace(/^.*@ ?/, '') + ')'; + } catch(e) { + // Oh well, it was worth a shot! } - var top_msg = st.splice(0, 1)[0]; - message += ' (' + top_msg.replace(/^.*@ ?/, '') + ')'; } if (typeof(console) != 'undefined') { -- 2.7.4