Fix lodash.isEqual for circular references (#4320) (#4515)

This commit is contained in:
Chinedum Ukejianya
2019-10-16 17:43:11 -04:00
committed by John-David Dalton
parent 94c3a8133c
commit 0cec225778
2 changed files with 28 additions and 10 deletions

View File

@@ -5634,10 +5634,11 @@
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
// Assume cyclic values are equal.
var stacked = stack.get(array);
if (stacked && stack.get(other)) {
return stacked == other;
// Check that cyclic values are equal.
var arrStacked = stack.get(array);
var othStacked = stack.get(other);
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array;
}
var index = -1,
result = true,
@@ -5799,10 +5800,11 @@
return false;
}
}
// Assume cyclic values are equal.
var stacked = stack.get(object);
if (stacked && stack.get(other)) {
return stacked == other;
// Check that cyclic values are equal.
var objStacked = stack.get(object);
var othStacked = stack.get(other);
if (objStacked && othStacked) {
return objStacked == other && othStacked == object;
}
var result = true;
stack.set(object, other);