Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/core/core.datasetController.js
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,9 @@ helpers.extend(DatasetController.prototype, {
unlistenArrayEvents(me._data, me);
}

listenArrayEvents(data, me);
if (data && !Object.isFrozen(data)) {
listenArrayEvents(data, me);
}
me._data = data;
}

Expand Down
19 changes: 19 additions & 0 deletions test/specs/core.datasetController.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,25 @@ describe('Chart.DatasetController', function() {
});
});

it('should handle a frozen data object', function() {
function createChart() {
var data = Object.freeze([0, 1, 2, 3, 4, 5]);
var chart = acquireChart({
type: 'line',
data: {
datasets: [{
data: data
}]
}
});

// Tests that the unlisten path also works for frozen objects
chart.destroy();
}

expect(createChart).not.toThrow();
});

it('should synchronize metadata when data are inserted or removed', function() {
var data = [0, 1, 2, 3, 4, 5];
var chart = acquireChart({
Expand Down