Bladeren bron

Revert "LibJS: Fix this_value in native setters and getters"

This reverts commit f102b563
The reverted to behavior is not correct for example with a double proxy
But this change lead to problems with DOMNodes
davidot 4 jaren geleden
bovenliggende
commit
83dd0164b2
1 gewijzigde bestanden met toevoegingen van 5 en 3 verwijderingen
  1. 5 3
      Userland/Libraries/LibJS/Runtime/Object.cpp

+ 5 - 3
Userland/Libraries/LibJS/Runtime/Object.cpp

@@ -278,7 +278,7 @@ Value Object::get_own_property(const PropertyName& property_name, Value receiver
         if (value_here.is_accessor())
             return value_here.as_accessor().call_getter(receiver);
         if (value_here.is_native_property())
-            return call_native_property_getter(value_here.as_native_property(), this);
+            return call_native_property_getter(value_here.as_native_property(), receiver);
     }
     return value_here;
 }
@@ -940,7 +940,9 @@ bool Object::put_by_index(u32 property_index, Value value)
                 return true;
             }
             if (value_here.value.is_native_property()) {
-                call_native_property_setter(value_here.value.as_native_property(), this, value);
+                // FIXME: Why doesn't put_by_index() receive the receiver value from put()?!
+                auto receiver = this;
+                call_native_property_setter(value_here.value.as_native_property(), receiver, value);
                 return true;
             }
         }
@@ -977,7 +979,7 @@ bool Object::put(const PropertyName& property_name, Value value, Value receiver)
                 return true;
             }
             if (value_here.is_native_property()) {
-                call_native_property_setter(value_here.as_native_property(), this, value);
+                call_native_property_setter(value_here.as_native_property(), receiver, value);
                 return true;
             }
         }