Chromium Code Reviews| Index: src/js/json.js |
| diff --git a/src/js/json.js b/src/js/json.js |
| index 38c46af6d617f41332126f6195cbb45e8c553958..1ed106db25eb3e35bb3164ae0ba1bc1d0c1cc8f8 100644 |
| --- a/src/js/json.js |
| +++ b/src/js/json.js |
| @@ -28,19 +28,24 @@ utils.Import(function(from) { |
| // ------------------------------------------------------------------- |
| -function Revive(holder, name, reviver) { |
| +function InternalizeJSONProperty(holder, name, reviver) { |
| var val = holder[name]; |
| if (IS_OBJECT(val)) { |
| if (IS_ARRAY(val)) { |
|
Yang
2015/12/08 14:21:54
I thought IS_ARRAY is not the same as IsArray from
|
| var length = val.length; |
| for (var i = 0; i < length; i++) { |
| - var newElement = Revive(val, %_NumberToString(i), reviver); |
| - val[i] = newElement; |
| + var newElement = |
| + InternalizeJSONProperty(val, %_NumberToString(i), reviver); |
| + if (IS_UNDEFINED(newElement)) { |
| + delete val[i]; |
| + } else { |
| + val[i] = newElement; |
|
Yang
2015/12/08 14:21:54
is this equivalent to CreateDataProperty? What if
adamk
2015/12/09 23:49:20
What was the response to this comment? Perhaps thi
|
| + } |
| } |
| } else { |
| for (var p in val) { |
| if (HAS_OWN_PROPERTY(val, p)) { |
| - var newElement = Revive(val, p, reviver); |
| + var newElement = InternalizeJSONProperty(val, p, reviver); |
| if (IS_UNDEFINED(newElement)) { |
| delete val[p]; |
| } else { |
| @@ -57,7 +62,7 @@ function Revive(holder, name, reviver) { |
| function JSONParse(text, reviver) { |
| var unfiltered = %ParseJson(text); |
| if (IS_CALLABLE(reviver)) { |
| - return Revive({'': unfiltered}, '', reviver); |
| + return InternalizeJSONProperty({'': unfiltered}, '', reviver); |
| } else { |
| return unfiltered; |
| } |