Bugfix: Object.freeze() called on null

For five minutes I stared at the following code...

    if(value != null && typeof value === "object") {
      Object.freeze(value);
    }

... and at the error message that led me to this code: `Object.freeze called on non-object`

And then I remembered that js treads null as object (http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.3). This means the `typeof === "object"` will not discover null and freeze will throw an error...

So `value != null` will also work when value is undefined.

A hard to find bug ;)
print-window-tiddler
Felix Küppers 2015-03-07 20:47:43 +01:00
rodzic 42499ea6ff
commit f99a4e7664
1 zmienionych plików z 1 dodań i 1 usunięć

Wyświetl plik

@ -793,7 +793,7 @@ $tw.Tiddler = function(/* [fields,] fields */) {
value = src[t];
}
// Freeze the field to keep it immutable
if(typeof value === "object") {
if(value != null && typeof value === "object") {
Object.freeze(value);
}
this.fields[t] = value;