diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-object.c b/jerry-core/ecma/builtin-objects/ecma-builtin-object.c index e5297fc24..44f9bdef0 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-object.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-object.c @@ -1014,7 +1014,7 @@ ecma_builtin_object_dispatch_routine (uint16_t builtin_routine_id, /**< built-in #if ENABLED (JERRY_ES2015) if (!ecma_is_value_object (arg1)) { - return arg1; + return ecma_copy_value (arg1); } #endif /* ENABLED (JERRY_ES2015) */ diff --git a/tests/jerry/es2015/object-methods.js b/tests/jerry/es2015/object-methods.js index 3b5cea5da..dca58a673 100644 --- a/tests/jerry/es2015/object-methods.js +++ b/tests/jerry/es2015/object-methods.js @@ -30,19 +30,31 @@ assert (d.enumerable === true); assert (d.configurable === false); assert (Object.seal(42) === 42); +assert (Object.seal("a") === "a"); assert (Object.seal(undefined) === undefined); +assert (Object.seal() === undefined); assert (Object.isSealed(42) === true); +assert (Object.isSealed("a") === true); assert (Object.isSealed(undefined) === true); +assert (Object.isSealed() === true); assert (Object.freeze(42) === 42); +assert (Object.freeze("a") === "a"); assert (Object.freeze(undefined) === undefined); +assert (Object.freeze() === undefined); assert (Object.isFrozen(42) === true); +assert (Object.isFrozen("a") === true); assert (Object.isFrozen(undefined) === true); +assert (Object.isFrozen() === true); assert (Object.preventExtensions(42) === 42); +assert (Object.preventExtensions("a") === "a"); assert (Object.preventExtensions(undefined) === undefined); +assert (Object.preventExtensions() === undefined); assert (Object.isExtensible(42) === false); +assert (Object.isExtensible("a") === false); assert (Object.isExtensible(undefined) === false); +assert (Object.isExtensible() === false);