Browse Source

LibJS: Handle non-string primitive values in Object::to_string()

Linus Groh 5 năm trước cách đây
mục cha
commit
4bdb6daac5

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

@@ -361,12 +361,12 @@ Value Object::to_string() const
         && to_string_property.as_object().is_function()) {
         && to_string_property.as_object().is_function()) {
         auto& to_string_function = static_cast<Function&>(to_string_property.as_object());
         auto& to_string_function = static_cast<Function&>(to_string_property.as_object());
         auto& interpreter = const_cast<Object*>(this)->interpreter();
         auto& interpreter = const_cast<Object*>(this)->interpreter();
-        auto string_value = interpreter.call(to_string_function, const_cast<Object*>(this));
-        if (!string_value.is_string())
+        auto to_string_result = interpreter.call(to_string_function, const_cast<Object*>(this));
+        if (to_string_result.is_object())
             interpreter.throw_exception<TypeError>("Cannot convert object to string");
             interpreter.throw_exception<TypeError>("Cannot convert object to string");
         if (interpreter.exception())
         if (interpreter.exception())
             return {};
             return {};
-        return string_value;
+        return js_string(heap(), to_string_result.to_string());
     }
     }
     return js_string(heap(), String::format("[object %s]", class_name()));
     return js_string(heap(), String::format("[object %s]", class_name()));
 }
 }