<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>38636</bug_id>
          
          <creation_ts>2010-05-06 02:53:59 -0700</creation_ts>
          <short_desc>Object.defineProperty doesn&apos;t respect attributes when applied to the Global Object</short_desc>
          <delta_ts>2012-03-12 15:51:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Hansen">kent.hansen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bedney</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>221597</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2010-05-06 02:53:59 -0700</bug_when>
    <thetext>For a &quot;plain&quot; object, this works as expected:

./jsc
&gt; Object.defineProperty(o, &quot;foo&quot;, { writable: false, configurable: false, value: 123 });
[object Object]
&gt; o.foo
123
&gt; o.foo = 456; o.foo
123
&gt; delete o.foo
false

When defining a property on the Global Object, however, the result is different:

./jsc
&gt; Object.defineProperty(this, &quot;foo&quot;, { writable: false, configurable: false, value: 123 });
[object global]
&gt; foo
123
&gt; foo = 456; foo
456
&gt; delete foo
true
&gt; foo
Exception: ReferenceError: Can&apos;t find variable: foo

The same happens when using the C API, e.g.:

JSStringRef jsFooString = JSStringCreateWithUTF8CString(&quot;foo&quot;);
JSValueRef js123Value = JSValueMakeNumber(context, 123);
JSObjectSetProperty(context, globalObject, jsFooString, js123Value, kJSPropertyAttributeReadOnly, 0);
JSStringRef myScript = JSStringCreateWithUTF8CString(&quot;foo = 456; foo&quot;);
JSValueRef ret = JSEvaluateScript(context, myScript, 0, 0, 0, 0); // ret will be 456</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287886</commentid>
    <comment_count>1</comment_count>
    <who name="William J. Edney">bedney</who>
    <bug_when>2010-09-30 15:33:06 -0700</bug_when>
    <thetext>I can confirm this bug, and its a nasty one (IE9 beta1 has the same issue and I&apos;ve reported it to them as well).

One of our chief uses for this is the ability to &apos;lock&apos; a global variable acting as a namespace for a library of code, such that it can&apos;t be inadvertently blown away by a user of that library forgetting to &apos;var&apos; a variable of the same name:

Object.defineProperty(self, &apos;myLib&apos;, {writable: false});

Then &apos;myLib&apos; can be used to &apos;hang&apos; code off of, but can&apos;t be blown away.

Any ideas on fixage here?

Cheers,

- Bill</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300991</commentid>
    <comment_count>2</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-28 04:44:07 -0700</bug_when>
    <thetext>FWIW, something like this:


diff --git a/JavaScriptCore/runtime/JSGlobalObject.cpp b/JavaScriptCore/runtime/JSGlobalObject.cpp
index a8fb7bf..11a06ce 100644
--- a/JavaScriptCore/runtime/JSGlobalObject.cpp
+++ b/JavaScriptCore/runtime/JSGlobalObject.cpp
@@ -163,15 +163,7 @@ void JSGlobalObject::putWithAttributes(ExecState* exec, const Identifier&amp; proper

     if (symbolTablePutWithAttributes(propertyName, value, attributes))
         return;
-
-    JSValue valueBefore = getDirect(propertyName);
-    PutPropertySlot slot;
-    JSVariableObject::put(exec, propertyName, value, slot);
-    if (!valueBefore) {
-        JSValue valueAfter = getDirect(propertyName);
-        if (valueAfter)
-            JSObject::putWithAttributes(exec, propertyName, valueAfter, attributes);
-    }
+    JSObject::putWithAttributes(exec, propertyName, value, attributes);
 }

seems to fix the proposed testcase, and I don&apos;t get any regression in the jsc or layout tests. I must say that I don&apos;t really understand what the removed code is trying to achieve though, but the end result is that the value is introduced in the global object disregarding the attributes requested (first in the direct call to ::put, and after that in JSObject::putDirectInternal, when we find that the value was already inserted).

If this seems sensible I can do a layout test and put it up for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302947</commentid>
    <comment_count>3</comment_count>
      <attachid>72562</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-11-01 14:41:45 -0700</bug_when>
    <thetext>Created attachment 72562
definepropertyglobalobject.diff

Attaching the suggested patch with a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303994</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2010-11-03 06:07:57 -0700</bug_when>
    <thetext>Hi Xan, thanks for your interest in this issue. :-)

It looks like the valueBefore/valueAfter logic dates back to the patch for https://bugs.webkit.org/show_bug.cgi?id=17067 (http://trac.webkit.org/changeset/30534), although code has changed/moved around since then. Maybe Darin could comment on what this actually does.

It seems like this part

    if (valueAfter)
        JSObject::putWithAttributes(exec, propertyName, valueAfter, attributes);

relies on putWithAttributes() updating the attributes of the existing property (since the previous put() created it with no attributes).

This is the bug reported in https://bugs.webkit.org/show_bug.cgi?id=40613. And like I commented there, a potential fix would be to make JSObject::putWithAttributes() update the attributes in case the property already exists (just like it does for the value).

Simply removing the call to put() seems a bit risky since JSObject::put() has a lot more logic than JSObject::putWithAttributes().
For example, your testcase should have something like

Object.defineProperty(this, &quot;__proto__&quot;, {value:123})

As per JSObject::put(), &quot;Setting __proto__ to a non-object, non-null value is silently ignored to match Mozilla&quot;. (I just checked with V8 and they also match this behavior for defineProperty(O, &quot;__proto__&quot;)).

You should also check what happens when the property exists as a getter/setter in the prototype chain, since JSObject::put() has logic for that too.

this.__proto__ = {};
this.__proto__.__defineGetter__(&quot;foo&quot;, function() { return this._x; });
this.__proto__.__defineSetter__(&quot;foo&quot;, function(v) { this._x = v; });
Object.defineProperty(this, &quot;foo&quot;, { value: 123, configurable: true, writable: true });
this.hasOwnProperty(&quot;foo&quot;); // FALSE!

I.e. currently (without your patch) the property will not be defined on the Global Object, but will rather invoke the foo setter in the prototype chain. This is different than the behavior for normal objects, where Object.defineProperty() _will_ create a new property on the object itself, even if there is a setter in the prototype chain. This is a different bug, but I don&apos;t see how it can be fixed so long as JSGlobalObject::putWithAttributes() calls JSObject::put()...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304004</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2010-11-03 06:27:27 -0700</bug_when>
    <thetext>I created https://bugs.webkit.org/show_bug.cgi?id=48911 for the Global-Object-with-setter-in-prototype-chain issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304177</commentid>
    <comment_count>6</comment_count>
      <attachid>72562</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-11-03 11:58:58 -0700</bug_when>
    <thetext>Comment on attachment 72562
definepropertyglobalobject.diff

View in context: https://bugs.webkit.org/attachment.cgi?id=72562&amp;action=review

&gt; JavaScriptCore/runtime/JSGlobalObject.cpp:-174
&gt; -    JSValue valueBefore = getDirect(propertyName);
&gt; -    PutPropertySlot slot;
&gt; -    JSVariableObject::put(exec, propertyName, value, slot);
&gt; -    if (!valueBefore) {
&gt; -        JSValue valueAfter = getDirect(propertyName);
&gt; -        if (valueAfter)
&gt; -            JSObject::putWithAttributes(exec, propertyName, valueAfter, attributes);
&gt; -    }

This old code was somewhat convoluted and I&apos;m not sure why -- before we remove it I think we should really understand why the current code behaves as it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304184</commentid>
    <comment_count>7</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-11-03 12:07:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 72562 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72562&amp;action=review
&gt; 
&gt; &gt; JavaScriptCore/runtime/JSGlobalObject.cpp:-174
&gt; &gt; -    JSValue valueBefore = getDirect(propertyName);
&gt; &gt; -    PutPropertySlot slot;
&gt; &gt; -    JSVariableObject::put(exec, propertyName, value, slot);
&gt; &gt; -    if (!valueBefore) {
&gt; &gt; -        JSValue valueAfter = getDirect(propertyName);
&gt; &gt; -        if (valueAfter)
&gt; &gt; -            JSObject::putWithAttributes(exec, propertyName, valueAfter, attributes);
&gt; &gt; -    }
&gt; 
&gt; This old code was somewhat convoluted and I&apos;m not sure why -- before we remove it I think we should really understand why the current code behaves as it does.

Totally agree (and thanks Kent for the extended reply!). The patch was more meant as a &quot;Hey, this seems to fix it and pass all tests, what&apos;s the deal here&quot;. I&apos;ve been using the patch for many days now and I haven&apos;t seen any obvious bug, so if the code achieves something it must be very subtle and I think at the very least it should a comment and some test checking that we do what we intend to do there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312143</commentid>
    <comment_count>8</comment_count>
    <who name="William J. Edney">bedney</who>
    <bug_when>2010-11-21 10:38:01 -0800</bug_when>
    <thetext>I&apos;m attaching a testcase here. It certainly isn&apos;t all-encompassing, but when run on FF 4.Xb7 and Chrome 9.0.587.0 dev, it gives the expected values.

OTOH, when run against Webkit build 72487, the part of the test where the &apos;self&apos; (i.e. global) object is being tested fails.

Cheers,

- Bill</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312144</commentid>
    <comment_count>9</comment_count>
      <attachid>74511</attachid>
    <who name="William J. Edney">bedney</who>
    <bug_when>2010-11-21 10:39:04 -0800</bug_when>
    <thetext>Created attachment 74511
A test showing that the global object isn&apos;t respecting the property descriptor supplied when defining a property on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392820</commentid>
    <comment_count>10</comment_count>
      <attachid>72562</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-04-26 15:27:12 -0700</bug_when>
    <thetext>Comment on attachment 72562
definepropertyglobalobject.diff

Oliver changed the behavior on Object.defineProperty lately. Can you check it again please? Otherwise feel free to set r? again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576643</commentid>
    <comment_count>11</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-12 15:51:02 -0700</bug_when>
    <thetext>This works for me in ToT, was likely fixed in r106783.  Will land a regression test for this.  Please reopen if you&apos;re still repro&apos;ing any issues in ToT.

Cheers, G.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72562</attachid>
            <date>2010-11-01 14:41:45 -0700</date>
            <delta_ts>2011-04-26 15:27:12 -0700</delta_ts>
            <desc>definepropertyglobalobject.diff</desc>
            <filename>definepropertyglobalobject.diff</filename>
            <type>text/plain</type>
            <size>7049</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAyNmJhZGMzZjgyZWI1ZTMyMjg4YThmYjMwYTJlZjJjMmVjMWJjY2Y5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBN
b24sIDEgTm92IDIwMTAgMTQ6NDA6MjEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBKYXZhU2NyaXB0
Q29yZToKCjIwMTAtMTEtMDEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5IGRvZXNuJ3QgcmVzcGVjdCBhdHRyaWJ1dGVzIHdoZW4gYXBwbGllZCB0byB0aGUgR2xvYmFs
IE9iamVjdAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODYzNgoKICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgogICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyk6IGRvIG5vdCBkZWZpbmUgcHJvcGVy
dGllcwogICAgICAgIHdpdGggdGhlIHNpbXBsZSA6OnB1dCBBUEkgZmlyc3QsIG90aGVyd2lyc2Ug
dGhlIGF0dHJpYnV0ZXMKICAgICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBjb21wbGV0ZWx5IGlnbm9y
ZWQgd2hlbiB3ZSB0cnkgdG8gZGVmaW5lIHRoZQogICAgICAgIHByb3BlcnR5IGxhdGVyIHVzaW5n
IDo6cHV0V2l0aEF0dHJpYnV0ZXMuCgpMYXlvdXRUZXN0czoKCjIwMTAtMTEtMDEgIFhhbiBMb3Bl
eiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KCiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5IGRvZXNuJ3QgcmVzcGVjdCBhdHRyaWJ1
dGVzIHdoZW4gYXBwbGllZCB0byB0aGUgR2xvYmFsIE9iamVjdAogICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODYzNgoKICAgICAgICBBZGQgdGVzdCB0byBj
aGVjayB0aGF0IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB3b3JrcyBvayB3aXRoIHRoZSBnbG9iYWwg
b2JqZWN0LgoKICAgICAgICAqIGZhc3QvanMvZGVmaW5lLXByb3BlcnR5LWdsb2JhbC1vYmplY3Qt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAgICAgICAqIGZhc3QvanMvZGVmaW5lLXByb3BlcnR5LWds
b2JhbC1vYmplY3QuaHRtbDogQWRkZWQuCiAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9k
ZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9iamVjdC5qczogQWRkZWQuCi0tLQogSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrKysrKysrKysK
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwICAgICAgICAgIHwgICAx
MCArLS0tLS0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEzICsrKysrKysrKysKIC4uLi9qcy9kZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9i
amVjdC1leHBlY3RlZC50eHQgIHwgICAyMSArKysrKysrKysrKysrKysrCiAuLi4vZmFzdC9qcy9k
ZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9iamVjdC5odG1sICAgICB8ICAgMTMgKysrKysrKysrKwog
Li4uL3NjcmlwdC10ZXN0cy9kZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9iamVjdC5qcyAgfCAgIDI2
ICsrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyks
IDkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9qcy9k
ZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9iamVjdC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9mYXN0L2pzL2RlZmluZS1wcm9wZXJ0eS1nbG9iYWwtb2JqZWN0Lmh0
bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9k
ZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9iamVjdC5qcwoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3YjkzNWQ0Li5i
ODdlMDVjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDEgIFhhbiBMb3Bl
eiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBkb2Vzbid0IHJlc3BlY3QgYXR0
cmlidXRlcyB3aGVuIGFwcGxpZWQgdG8gdGhlIEdsb2JhbCBPYmplY3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NjM2CisKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1
dFdpdGhBdHRyaWJ1dGVzKTogZG8gbm90IGRlZmluZSBwcm9wZXJ0aWVzCisgICAgICAgIHdpdGgg
dGhlIHNpbXBsZSA6OnB1dCBBUEkgZmlyc3QsIG90aGVyd2lyc2UgdGhlIGF0dHJpYnV0ZXMKKyAg
ICAgICAgcGFyYW1ldGVyIHdpbGwgYmUgY29tcGxldGVseSBpZ25vcmVkIHdoZW4gd2UgdHJ5IHRv
IGRlZmluZSB0aGUKKyAgICAgICAgcHJvcGVydHkgbGF0ZXIgdXNpbmcgOjpwdXRXaXRoQXR0cmli
dXRlcy4KKwogMjAxMC0xMC0yOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBhOGZiN2JmLi4xMWEwNmNlIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTYzLDE1ICsxNjMsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcgogCiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJp
YnV0ZXMocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcykpCiAgICAgICAgIHJldHVybjsK
LQotICAgIEpTVmFsdWUgdmFsdWVCZWZvcmUgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKLSAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBKU1ZhcmlhYmxlT2JqZWN0OjpwdXQoZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Ci0gICAgaWYgKCF2YWx1ZUJlZm9yZSkgewotICAg
ICAgICBKU1ZhbHVlIHZhbHVlQWZ0ZXIgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgaWYgKHZhbHVlQWZ0ZXIpCi0gICAgICAgICAgICBKU09iamVjdDo6cHV0V2l0aEF0dHJpYnV0
ZXMoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZUFmdGVyLCBhdHRyaWJ1dGVzKTsKLSAgICB9Cisg
ICAgSlNPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBn
ZXR0ZXJGdW5jLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ1Y2I4ODQuLmNmMGNiMGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMS0wMSAgWGFuIExvcGV6ICA8eGxvcGV6QGln
YWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5IGRvZXNuJ3QgcmVzcGVjdCBhdHRyaWJ1dGVzIHdoZW4g
YXBwbGllZCB0byB0aGUgR2xvYmFsIE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg2MzYKKworICAgICAgICBBZGQgdGVzdCB0byBjaGVjayB0
aGF0IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB3b3JrcyBvayB3aXRoIHRoZSBnbG9iYWwgb2JqZWN0
LgorCisgICAgICAgICogZmFzdC9qcy9kZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9iamVjdC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvZGVmaW5lLXByb3BlcnR5LWdsb2Jh
bC1vYmplY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGVm
aW5lLXByb3BlcnR5LWdsb2JhbC1vYmplY3QuanM6IEFkZGVkLgorCiAyMDEwLTExLTAxICBEbWl0
cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5y
ZXZpZXdlZCwgdXBkYXRlIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9qcy9kZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9iamVjdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2pzL2RlZmluZS1wcm9wZXJ0eS1nbG9iYWwtb2JqZWN0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjhkOWM0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9kZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9i
amVjdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB3b3JrcyBjb3JyZWN0bHkgb24gdGhlIGdsb2JhbCBvYmpl
Y3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZm9vIGlzIDEyMworUEFT
UyBmb28gaXMgMTIzCitQQVNTIGRlbGV0ZSBmb28gaXMgZmFsc2UKK1BBU1MgZm9vIGlzIDEyMwor
UEFTUyBiYXIgaXMgMTIzCitQQVNTIGJhciBpcyA0NTYKK1BBU1MgZGVsZXRlIGJhciBpcyB0cnVl
CitQQVNTIGJhciB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IGJhci4KK1BBU1MgYmF6IGlzIDEyMworUEFTUyBiYXogaXMgNDU2CitQQVNTIGRlbGV0
ZSBiYXogaXMgZmFsc2UKK1BBU1MgYmF6IGlzIDQ1NgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
anMvZGVmaW5lLXByb3BlcnR5LWdsb2JhbC1vYmplY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
anMvZGVmaW5lLXByb3BlcnR5LWdsb2JhbC1vYmplY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xMmEzN2NlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9kZWZpbmUtcHJvcGVydHktZ2xvYmFsLW9iamVjdC5odG1sCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVmaW5lLXByb3Bl
cnR5LWdsb2JhbC1vYmplY3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGVmaW5lLXByb3BlcnR5LWdsb2JhbC1v
YmplY3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZWZpbmUtcHJvcGVy
dHktZ2xvYmFsLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
MTA0ZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvZGVmaW5lLXByb3BlcnR5LWdsb2JhbC1vYmplY3QuanMKQEAgLTAsMCArMSwyNiBAQAorZGVz
Y3JpcHRpb24oCisiVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB3
b3JrcyBjb3JyZWN0bHkgb24gdGhlIGdsb2JhbCBvYmplY3QiCispOworCitPYmplY3QuZGVmaW5l
UHJvcGVydHkodGhpcywgImZvbyIsIHsgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZh
bHNlLCB2YWx1ZTogMTIzIH0pOworc2hvdWxkQmUoJ2ZvbycsICcxMjMnKTsKK2ZvbyA9IDQ1NjsK
K3Nob3VsZEJlKCdmb28nLCAnMTIzJyk7CitzaG91bGRCZSgnZGVsZXRlIGZvbycsICdmYWxzZScp
Oworc2hvdWxkQmUoJ2ZvbycsICcxMjMnKTsKKworT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMs
ICJiYXIiLCB7IHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiAxMjMg
fSk7CitzaG91bGRCZSgnYmFyJywgJzEyMycpOworYmFyID0gNDU2Oworc2hvdWxkQmUoJ2Jhcics
ICc0NTYnKTsKK3Nob3VsZEJlKCdkZWxldGUgYmFyJywgJ3RydWUnKTsKK3Nob3VsZFRocm93KCdi
YXInKTsKKworT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICJiYXoiLCB7IHdyaXRhYmxlOiB0
cnVlLCBjb25maWd1cmFibGU6IGZhbHNlLCB2YWx1ZTogMTIzIH0pOworc2hvdWxkQmUoJ2Jheics
ICcxMjMnKTsKK2JheiA9IDQ1NjsKK3Nob3VsZEJlKCdiYXonLCAnNDU2Jyk7CitzaG91bGRCZSgn
ZGVsZXRlIGJheicsICdmYWxzZScpOworc2hvdWxkQmUoJ2JheicsICc0NTYnKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0tIAoxLjcuMi4zCgo=
</data>
<flag name="review"
          id="62829"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>74511</attachid>
            <date>2010-11-21 10:39:04 -0800</date>
            <delta_ts>2010-11-21 10:39:04 -0800</delta_ts>
            <desc>A test showing that the global object isn&apos;t respecting the property descriptor supplied when defining a property on it.</desc>
            <filename>definepropglobaltest.html</filename>
            <type>text/html</type>
            <size>1649</size>
            <attacher name="William J. Edney">bedney</attacher>
            
              <data encoding="base64">PGh0bWw+Cgk8aGVhZD4KCQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJZnVuY3Rp
b24gdGVzdE9iamVjdChhbk9iaikKCXsKCQl2YXIga2V5OwoKCQl2YXIgZm91bmRTbG90MTsKCQl2
YXIgZm91bmRTbG90MzsKCgkJdmFyIHNsb3QxUHJvcHM7CgkJdmFyIHNsb3Q0UHJvcHM7CgoJCXZh
ciBwcmV2V3JpdGFibGVWYWx1ZTsKCgkJaWYgKCFPYmplY3RbJ2RlZmluZVByb3BlcnR5J10pCgkJ
ewoJCQlhbGVydCgnVGhpcyBicm93c2VyIGRvZXNuXCd0IHN1cHBvcnQgImRlZmluZVByb3BlcnR5
IicpOwoJCQlyZXR1cm47CgkJfTsKCgkJLy8JLS0tCgoJCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShh
bk9iaiwgJ3Nsb3QxJywge3ZhbHVlOiAnZm9vJywKCQkJCQkJCQkJCQkJZW51bWVyYWJsZTogdHJ1
ZX0pOwoJCWFsZXJ0KCdUaGUgdmFsdWUgb2YgInNsb3QxIiwgd2hpY2ggc2hvdWxkIGJlICJmb28i
OiAnICsgYW5PYmouc2xvdDEpOwoKCQkvLwktLS0KCgkJT2JqZWN0LmRlZmluZVByb3BlcnR5KGFu
T2JqLCAnc2xvdDInLCB7dmFsdWU6ICdiYXInLAoJCQkJCQkJCQkJCQl3cml0YWJsZTogZmFsc2V9
KTsKCQlhbGVydCgnVGhlIHZhbHVlIG9mICJzbG90MiIsIHdoaWNoIHNob3VsZCBiZSAiYmFyIjog
JyArIGFuT2JqLnNsb3QyKTsKCgkJLy8JVGhpcyBzaG91bGRuJ3QgZG8gYW55dGhpbmcgLSAnd3Jp
dGFibGUnIGlzIGZhbHNlCgkJYW5PYmouc2xvdDIgPSAnYmFkIHZhbHVlJzsKCgkJYWxlcnQoJ1Ro
ZSB2YWx1ZSBvZiAic2xvdDIiLCB3aGljaCBzaG91bGQgYmUgImJhciI6ICcgKyBhbk9iai5zbG90
Mik7CgoJCS8vCS0tLQoKCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoYW5PYmosICdzbG90MycsIHt2
YWx1ZTogJ2JheicsCgkJCQkJCQkJCQkJCWVudW1lcmFibGU6IGZhbHNlfSk7CgoJCWFsZXJ0KCdz
bG90MSBpcyBlbnVtZXJhYmxlLiBUaGlzIHNob3VsZCBiZSB0cnVlOiAnICsgYW5PYmoucHJvcGVy
dHlJc0VudW1lcmFibGUoJ3Nsb3QxJykpOwoJCWFsZXJ0KCdzbG90NCBpcyBub3QgZW51bWVyYWJs
ZS4gVGhpcyBzaG91bGQgYmUgZmFsc2U6ICcgKyBhbk9iai5wcm9wZXJ0eUlzRW51bWVyYWJsZSgn
c2xvdDMnKSk7CgoJCS8vCS0tLQoKCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoYW5PYmosICdzbG90
NCcsIHt2YWx1ZTogJ2dvbycsCgkJCQkJCQkJCQkJCWNvbmZpZ3VyYWJsZTogZmFsc2V9KTsKCgkJ
Ly8JVGhpcyBzaG91bGRuJ3QgZG8gYW55dGhpbmcgLSAnY29uZmlndXJhYmxlJyBpcyBmYWxzZQoJ
CWRlbGV0ZSBhbk9iai5zbG90NDsKCgkJYWxlcnQoJ1RoZSB2YWx1ZSBvZiAic2xvdDQiLCB3aGlj
aCBzaG91bGQgYmUgImdvbyI6ICcgKyBhbk9iai5zbG90NCk7Cgl9OwoKCWZ1bmN0aW9uIGRvSXQo
KQoJewoJCWFsZXJ0KCdnZXR0aW5nIHJlYWR5IHRvIHRlc3QgYW4gaW5zdGFuY2Ugb2YgYSByZWd1
bGFyIE9iamVjdCcpOwoJCXRlc3RPYmplY3Qoe30pOwoKCQlhbGVydCgnZ2V0dGluZyByZWFkeSB0
byB0ZXN0IHNlbGYnKTsKCQl0ZXN0T2JqZWN0KHNlbGYpOwoJfTsKCgk8L3NjcmlwdD4KCgk8L2hl
YWQ+CgkKCTxib2R5PgoKCQk8YnV0dG9uIG9uY2xpY2s9ImRvSXQoKSI+Q2xpY2sgaGVyZSB0byBz
ZWUgdGhlIG91dHB1dCBvZiB0aGUgdGVzdDwvYnV0dG9uPgoJPC9ib2R5PgoKPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>