Skip to content

Commit 5edd66f

Browse files
committed
fix parseInt64
1 parent ac97466 commit 5edd66f

3 files changed

Lines changed: 10 additions & 12 deletions

File tree

src/library.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3885,23 +3885,21 @@ LibraryManager.library = {
38853885
}
38863886
if (!ok) {
38873887
___setErrNo(ERRNO_CODES.EINVAL);
3888-
return [0, 0];
3889-
}
3890-
3891-
try {
3892-
i64Math.fromString(Pointer_stringify(start, str - start), finalBase, min, max, unsign);
3893-
} catch(e) {
3894-
___setErrNo(ERRNO_CODES.ERANGE); // not quite correct
3888+
{{{ makeStructuralReturn(['0', '0']) }}};
38953889
}
38963890

38973891
// Set end pointer.
38983892
if (endptr) {
38993893
{{{ makeSetValue('endptr', 0, 'str', '*') }}}
39003894
}
39013895

3902-
var ret = i64Math.result.slice(0);
3896+
try {
3897+
i64Math.fromString(Pointer_stringify(start, str - start), finalBase, min, max, unsign);
3898+
} catch(e) {
3899+
___setErrNo(ERRNO_CODES.ERANGE); // not quite correct
3900+
}
39033901

3904-
return ret;
3902+
{{{ makeStructuralReturn([makeGetTempDouble(0), makeGetTempDouble(1)]) }}};
39053903
},
39063904
#endif
39073905
strtoll__deps: ['_parseInt64'],

src/long.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1649,8 +1649,8 @@ var i64Math = (function() { // Emscripten wrapper
16491649
error = true;
16501650
}
16511651
var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well
1652-
Wrapper.result[0] = ret.low_;
1653-
Wrapper.result[1] = ret.high_;
1652+
HEAP32[tempDoublePtr>>2] = ret.low_;
1653+
HEAP32[tempDoublePtr+4>>2] = ret.high_;
16541654
if (error) throw 'range error';
16551655
}
16561656
};

src/parseTools.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1011,7 +1011,7 @@ function asmCoercion(value, type) {
10111011
}
10121012
}
10131013

1014-
function makeGetTempDouble(i) {
1014+
function makeGetTempDouble(i) { // TODO: Support other than i32
10151015
return makeGetValue('tempDoublePtr', Runtime.getNativeTypeSize('i32')*i, 'i32');
10161016
}
10171017

0 commit comments

Comments
 (0)