Index: src/v8natives.js |
=================================================================== |
--- src/v8natives.js (revision 6011) |
+++ src/v8natives.js (working copy) |
@@ -563,7 +563,7 @@ |
} |
// Step 7 |
- if (desc.isConfigurable() || desc.isEnumerable() != current.isEnumerable()) |
+ if (desc.isConfigurable() || desc.isEnumerable() != current.isEnumerable()) |
throw MakeTypeError("redefine_disallowed", ["defineProperty"]); |
// Step 9 |
if (IsDataDescriptor(current) != IsDataDescriptor(desc)) |
@@ -623,10 +623,12 @@ |
} |
%DefineOrRedefineDataProperty(obj, p, value, flag); |
} else { |
- if (desc.hasGetter() && IS_FUNCTION(desc.getGet())) { |
+ if (desc.hasGetter() && |
Lasse Reichstein
2010/12/16 09:43:34
How about putting desc.getGet() in a variable (and
Rico
2010/12/16 12:17:55
Well, we don't know if desc has a getter, intuitiv
|
+ (IS_FUNCTION(desc.getGet()) || IS_UNDEFINED(desc.getGet()))) { |
%DefineOrRedefineAccessorProperty(obj, p, GETTER, desc.getGet(), flag); |
} |
- if (desc.hasSetter() && IS_FUNCTION(desc.getSet())) { |
+ if (desc.hasSetter() && |
+ (IS_FUNCTION(desc.getSet()) || IS_UNDEFINED(desc.getSet()))) { |
%DefineOrRedefineAccessorProperty(obj, p, SETTER, desc.getSet(), flag); |
} |
} |