Skip to content

Commit

Permalink
Fix test262 error
Browse files Browse the repository at this point in the history
- force evaluation order in `set_date_fields`
- fix evaluation error in test262/test/built-ins/Date/UTC/fp-evaluation-order.js:19:
  unexpected error: Test262Error: precision in MakeDate Expected SameValue(«34448384», «34447360») to be true
  • Loading branch information
chqrlie committed Feb 12, 2024
1 parent ef4e7b2 commit 1fe0414
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions quickjs.c
Original file line number Diff line number Diff line change
Expand Up @@ -49431,7 +49431,8 @@ static double time_clip(double t) {
of the operations */
static double set_date_fields(double fields[], int is_local) {
int64_t y;
double days, d, h, m1;
double days, h, m1;
volatile double d; /* enforce evaluation order */
int i, m, md;

m1 = fields[1];
Expand All @@ -49448,9 +49449,14 @@ static double set_date_fields(double fields[], int is_local) {
days += md;
}
days += fields[2] - 1;
/* made d volatile to ensure order of evaluation as specified in ECMA.
* this fixes a test262 error on
* test262/test/built-ins/Date/UTC/fp-evaluation-order.js
*/
h = fields[3] * 3600000 + fields[4] * 60000 +
fields[5] * 1000 + fields[6];
d = days * 86400000 + h;
d = days * 86400000;
d = d + h;
if (is_local)
d += getTimezoneOffset(d) * 60000;
return time_clip(d);
Expand Down

0 comments on commit 1fe0414

Please sign in to comment.