| Index: lib/prefs.js | 
| =================================================================== | 
| --- a/lib/prefs.js | 
| +++ b/lib/prefs.js | 
| @@ -45,44 +45,47 @@ | 
| function defineProperty(key) | 
| { | 
| let value = null; | 
| -  Prefs.__defineGetter__(key, function() | 
| -  { | 
| -    if (value === null) | 
| +  Object.defineProperty(Prefs, key, { | 
| +    get: function() | 
| { | 
| -      if (key in ext.storage) | 
| +      if (value === null) | 
| { | 
| -        try | 
| +        if (key in ext.storage) | 
| { | 
| -          value = JSON.parse(ext.storage[key]); | 
| +          try | 
| +          { | 
| +            value = JSON.parse(ext.storage[key]); | 
| +          } | 
| +          catch(e) | 
| +          { | 
| +            Cu.reportError(e); | 
| +          } | 
| } | 
| -        catch(e) | 
| -        { | 
| -          Cu.reportError(e); | 
| -        } | 
| + | 
| +        if (value === null) | 
| +          value = JSON.parse(JSON.stringify(defaults[key])); | 
| } | 
| +      return value; | 
| +    }, | 
| +    set: function(newValue) | 
| +    { | 
| +      if (typeof newValue != typeof defaults[key]) | 
| +        throw new Error("Attempt to change preference type"); | 
|  | 
| -      if (value === null) | 
| -        value = JSON.parse(JSON.stringify(defaults[key])); | 
| -    } | 
| -    return value; | 
| -  }); | 
| -  Prefs.__defineSetter__(key, function(newValue) | 
| -  { | 
| -    if (typeof newValue != typeof defaults[key]) | 
| -      throw new Error("Attempt to change preference type"); | 
| +      let stringified = JSON.stringify(newValue); | 
| +      if (stringified != JSON.stringify(defaults[key])) | 
| +        ext.storage[key] = stringified; | 
| +      else | 
| +        delete ext.storage[key]; | 
|  | 
| -    let stringified = JSON.stringify(newValue); | 
| -    if (stringified != JSON.stringify(defaults[key])) | 
| -      ext.storage[key] = stringified; | 
| -    else | 
| -      delete ext.storage[key]; | 
| +      value = newValue; | 
|  | 
| -    value = newValue; | 
| +      for (let listener of listeners) | 
| +        listener(key); | 
|  | 
| -    for (let listener of listeners) | 
| -      listener(key); | 
| - | 
| -    return value; | 
| +      return value; | 
| +    }, | 
| +    enumerable: true | 
| }); | 
| } | 
|  | 
|  |