@@ -347,24 +347,32 @@ ecma_builtin_date_prototype_set_time (ecma_value_t this_arg, /**< this argument
347347{
348348 ecma_completion_value_t ret_value = ecma_make_empty_completion_value ();
349349
350- /* 1. */
351- ECMA_OP_TO_NUMBER_TRY_CATCH (t, time, ret_value);
352- ecma_number_t *value_p = ecma_alloc_number ();
353- *value_p = ecma_date_time_clip (t);
350+ if (!ecma_is_value_object (this_arg)
351+ || ecma_object_get_class_name (ecma_get_object_from_value (this_arg)) != LIT_MAGIC_STRING_DATE_UL)
352+ {
353+ ret_value = ecma_raise_type_error (" Incompatible type" );
354+ }
355+ else
356+ {
357+ /* 1. */
358+ ECMA_OP_TO_NUMBER_TRY_CATCH (t, time, ret_value);
359+ ecma_number_t *value_p = ecma_alloc_number ();
360+ *value_p = ecma_date_time_clip (t);
354361
355- /* 2. */
356- ecma_object_t *obj_p = ecma_get_object_from_value (this_arg);
362+ /* 2. */
363+ ecma_object_t *obj_p = ecma_get_object_from_value (this_arg);
357364
358- ecma_property_t *prim_value_prop_p = ecma_get_internal_property (obj_p,
359- ECMA_INTERNAL_PROPERTY_PRIMITIVE_NUMBER_VALUE);
365+ ecma_property_t *prim_value_prop_p = ecma_get_internal_property (obj_p,
366+ ECMA_INTERNAL_PROPERTY_PRIMITIVE_NUMBER_VALUE);
360367
361- ecma_number_t *prim_value_num_p = ECMA_GET_NON_NULL_POINTER (ecma_number_t ,
368+ ecma_number_t *prim_value_num_p = ECMA_GET_NON_NULL_POINTER (ecma_number_t ,
362369 prim_value_prop_p->u .internal_property .value );
363- *prim_value_num_p = *value_p;
370+ *prim_value_num_p = *value_p;
364371
365- /* 3. */
366- ret_value = ecma_make_normal_completion_value (ecma_make_number_value (value_p));
367- ECMA_OP_TO_NUMBER_FINALIZE (t);
372+ /* 3. */
373+ ret_value = ecma_make_normal_completion_value (ecma_make_number_value (value_p));
374+ ECMA_OP_TO_NUMBER_FINALIZE (t);
375+ }
368376
369377 return ret_value;
370378} /* ecma_builtin_date_prototype_set_time */
0 commit comments