diff --git a/src/plot_api/subroutines.js b/src/plot_api/subroutines.js index 252d78250e7..47118230af1 100644 --- a/src/plot_api/subroutines.js +++ b/src/plot_api/subroutines.js @@ -542,12 +542,18 @@ exports.drawData = function(gd) { var i; // remove old colorbars explicitly - for(i = 0; i < calcdata.length; i++) { - var trace = calcdata[i][0].trace; - if(trace.visible !== true || !trace._module.colorbar) { - fullLayout._infolayer.select('.cb' + trace.uid).remove(); + if(calcdata && calcdata.length) { + for(i = 0; i < calcdata.length; i++) { + var trace = calcdata[i][0].trace; + if(trace.visible !== true || !trace._module.colorbar) { + fullLayout._infolayer.select('.cb' + trace.uid).remove(); + } } } + else { + // Abort / reject + return Promise.reject('drawData aborting due to receiving invalid calcdata'); + } clearGlCanvases(gd); diff --git a/src/plots/plots.js b/src/plots/plots.js index 404e347ed6e..8f3c97ff378 100644 --- a/src/plots/plots.js +++ b/src/plots/plots.js @@ -484,7 +484,7 @@ plots.supplyDefaults = function(gd, opts) { plots.supplyDefaultsUpdateCalc = function(oldCalcdata, newFullData) { for(var i = 0; i < newFullData.length; i++) { var newTrace = newFullData[i]; - var cd0 = oldCalcdata[i][0]; + var cd0 = oldCalcdata && oldCalcdata[i] && oldCalcdata[i][0]; if(cd0 && cd0.trace) { var oldTrace = cd0.trace; if(oldTrace._hasCalcTransform) {