diff --git a/debug_toolbar/static/debug_toolbar/js/timer.js b/debug_toolbar/static/debug_toolbar/js/timer.js index 70d3fe5a2..6db5ce276 100644 --- a/debug_toolbar/static/debug_toolbar/js/timer.js +++ b/debug_toolbar/static/debug_toolbar/js/timer.js @@ -6,15 +6,29 @@ function insertBrowserTiming() { timingEnd = performance.timing.loadEventEnd, totalTime = timingEnd - timingOffset; function getLeft(stat) { - return ((performance.timing[stat] - timingOffset) / totalTime) * 100.0; + if (totalTime !== 0) { + return ( + ((performance.timing[stat] - timingOffset) / totalTime) * 100.0 + ); + } else { + return 0; + } } function getCSSWidth(stat, endStat) { - let width = - ((performance.timing[endStat] - performance.timing[stat]) / - totalTime) * - 100.0; - // Calculate relative percent (same as sql panel logic) - width = (100.0 * width) / (100.0 - getLeft(stat)); + let width = 0; + if (totalTime !== 0) { + width = + ((performance.timing[endStat] - performance.timing[stat]) / + totalTime) * + 100.0; + } + const denominator = 100.0 - getLeft(stat); + if (denominator !== 0) { + // Calculate relative percent (same as sql panel logic) + width = (100.0 * width) / denominator; + } else { + width = 0; + } return width < 1 ? "2px" : width + "%"; } function addRow(tbody, stat, endStat) { diff --git a/docs/changes.rst b/docs/changes.rst index 6f74c04b9..bd501b436 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -4,9 +4,9 @@ Change log Pending ------- +* Added protection against division by 0 in timer.js * Auto-update History panel for JavaScript ``fetch`` requests. - 3.7.0 (2022-09-25) ------------------