diff --git a/Userland/Libraries/LibJS/Runtime/NumberObject.cpp b/Userland/Libraries/LibJS/Runtime/NumberObject.cpp index 8284f91cad..200e1d4265 100644 --- a/Userland/Libraries/LibJS/Runtime/NumberObject.cpp +++ b/Userland/Libraries/LibJS/Runtime/NumberObject.cpp @@ -9,9 +9,9 @@ namespace JS { -NumberObject* NumberObject::create(Realm& realm, double value) +NonnullGCPtr NumberObject::create(Realm& realm, double value) { - return realm.heap().allocate(realm, value, *realm.intrinsics().number_prototype()); + return *realm.heap().allocate(realm, value, *realm.intrinsics().number_prototype()); } NumberObject::NumberObject(double value, Object& prototype) diff --git a/Userland/Libraries/LibJS/Runtime/NumberObject.h b/Userland/Libraries/LibJS/Runtime/NumberObject.h index ceaeb29e62..f6bc0df4d1 100644 --- a/Userland/Libraries/LibJS/Runtime/NumberObject.h +++ b/Userland/Libraries/LibJS/Runtime/NumberObject.h @@ -14,7 +14,7 @@ class NumberObject : public Object { JS_OBJECT(NumberObject, Object); public: - static NumberObject* create(Realm&, double); + static NonnullGCPtr create(Realm&, double); virtual ~NumberObject() override = default; diff --git a/Userland/Libraries/LibJS/Runtime/Value.cpp b/Userland/Libraries/LibJS/Runtime/Value.cpp index d891aa301e..e269df0b15 100644 --- a/Userland/Libraries/LibJS/Runtime/Value.cpp +++ b/Userland/Libraries/LibJS/Runtime/Value.cpp @@ -523,7 +523,7 @@ ThrowCompletionOr Value::to_object(VM& vm) const // Number if (is_number()) { // Return a new Number object whose [[NumberData]] internal slot is set to argument. See 21.1 for a description of Number objects. - return NumberObject::create(realm, as_double()); + return NumberObject::create(realm, as_double()).ptr(); } switch (m_value.tag) {