Index: src/messages.js |
diff --git a/src/messages.js b/src/messages.js |
index 4da38051f9200746250867e23f9cc4228c524178..a947bbfbe05aab380e6a78ca5b264d07f380ce63 100644 |
--- a/src/messages.js |
+++ b/src/messages.js |
@@ -766,18 +766,18 @@ function DefineOneShotAccessor(obj, name, fun) { |
// Note that the accessors consistently operate on 'obj', not 'this'. |
// Since the object may occur in someone else's prototype chain we |
// can't rely on 'this' being the same as 'obj'. |
- var hasBeenSet = false; |
var value; |
+ var getter_function = fun; |
var getter = function() { |
- if (hasBeenSet) { |
+ if (getter_function == null) { |
return value; |
} |
- hasBeenSet = true; |
- value = fun(obj); |
+ value = getter_function(obj); |
+ getter_function = null; |
return value; |
}; |
var setter = function(v) { |
- hasBeenSet = true; |
+ getter_function = null; |
value = v; |
}; |
%DefineOrRedefineAccessorProperty(obj, name, getter, setter, DONT_ENUM); |