From 75032f0a8de1096ffd5895b2a99c96f9adf887f4 Mon Sep 17 00:00:00 2001 From: Rodrigo Palhares Date: Fri, 30 Sep 2016 15:52:18 -0300 Subject: [PATCH] observer-sequence: Bug, array with null values. fixes #7850 --- packages/observe-sequence/observe_sequence.js | 5 +++-- packages/observe-sequence/observe_sequence_tests.js | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/observe-sequence/observe_sequence.js b/packages/observe-sequence/observe_sequence.js index 0ba750bcf5..1a823ab019 100644 --- a/packages/observe-sequence/observe_sequence.js +++ b/packages/observe-sequence/observe_sequence.js @@ -289,7 +289,8 @@ seqChangedToArray = function (lastSeqArray, array, callbacks) { id = "-" + item; } else if (typeof item === 'number' || typeof item === 'boolean' || - item === undefined) { + item === undefined || + item === null) { id = item; } else if (typeof item === 'object') { id = (item && ('_id' in item)) ? item._id : index; @@ -300,7 +301,7 @@ seqChangedToArray = function (lastSeqArray, array, callbacks) { var idString = idStringify(id); if (idsUsed[idString]) { - if (typeof item === 'object' && '_id' in item) + if (item && typeof item === 'object' && '_id' in item) warn("duplicate id " + id + " in", array); id = Random.id(); } else { diff --git a/packages/observe-sequence/observe_sequence_tests.js b/packages/observe-sequence/observe_sequence_tests.js index 4e126eca8f..e6a6ed823d 100644 --- a/packages/observe-sequence/observe_sequence_tests.js +++ b/packages/observe-sequence/observe_sequence_tests.js @@ -177,6 +177,15 @@ Tinytest.add('observe-sequence - array to other array, strings', function (test) ]); }); +Tinytest.add('observe-sequence - bug #7850 array with null values', function (test) { + runOneObserveSequenceTestCase(test, function () { + return [1, null]; + }, function () {}, [ + {addedAt: [1, 1, 0, null]}, + {addedAt: [null, null, 1, null]} + ]); +}); + Tinytest.add('observe-sequence - array to other array, objects without ids', function (test) { var dep = new Tracker.Dependency; var seq = [{foo: 1}, {bar: 2}];