1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 07:38:10 +00:00
serenity/Userland/Libraries/LibJS
Timothy Flynn 9e50f25ac4 LibJS: Prevent i64 overflow when computing large NumberFormat exponents
The largest exponents we compute are on the order of 10^21 (governed by
the maximumSignificantDigits option, which has a max value of 21). That
is too large to fit into the i64 we were using when multiplying this
exponent by the value to be formatted.

Instead, split up the logic to multiply that value by this exponent
based on the value's underlying type:

Number: Do not cast the result of pow() to an i64, and perform the
follow-up multiplication with doubles.

BigInt: Do not use pow(). Instead, compute the exponent as a BigInt
from the start, then perform the follow-up multiplication with that
BigInt.
2022-07-18 08:51:07 +01:00
..
Bytecode Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
Contrib/Test262 LibJS: Remove implicit wrapping/unwrapping of completion records 2022-05-03 01:09:29 +02:00
Heap Meta+Userland: Simplify some formatters 2022-07-12 23:11:35 +02:00
Runtime LibJS: Prevent i64 overflow when computing large NumberFormat exponents 2022-07-18 08:51:07 +01:00
Tests LibJS: Prevent i64 overflow when computing large NumberFormat exponents 2022-07-18 08:51:07 +01:00
AST.cpp Everywhere: Explicitly specify the size in StringView constructors 2022-07-12 23:11:35 +02:00
AST.h LibJS/Bytecode: Implement break/continue labels 2022-06-13 07:13:03 +04:30
CMakeLists.txt LibJS: Start implementing the stage 3 Intl.DurationFormat proposal 2022-07-01 01:00:05 +03:00
Console.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Console.h LibJS: Convert Console to use MarkedVector<Value> 2022-05-07 01:22:09 +02:00
CyclicModule.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
CyclicModule.h LibJS: Remove implicit wrapping/unwrapping of completion records 2022-05-03 01:09:29 +02:00
Forward.h LibJS: Start implementing the stage 3 Intl.DurationFormat proposal 2022-07-01 01:00:05 +03:00
Interpreter.cpp LibJS: Remove implicit wrapping/unwrapping of completion records 2022-05-03 01:09:29 +02:00
Interpreter.h LibJS: Remove implicit wrapping/unwrapping of completion records 2022-05-03 01:09:29 +02:00
Lexer.cpp Everywhere: Use default StringView constructor over nullptr 2022-07-12 23:11:35 +02:00
Lexer.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
MarkupGenerator.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
MarkupGenerator.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Module.cpp LibJS: Remove implicit wrapping/unwrapping of completion records 2022-05-03 01:09:29 +02:00
Module.h Libraries: Use default constructors/destructors in LibJS 2022-03-16 16:19:40 +00:00
Parser.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Parser.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Script.cpp LibJS: Rename some variables from "script body" to "script" 2022-05-01 22:47:38 +02:00
Script.h Libraries: Use default constructors/destructors in LibJS 2022-03-16 16:19:40 +00:00
SourceRange.h LibJS: Add missing headers 2021-10-06 23:52:40 +01:00
SourceTextModule.cpp LibJS: Remove implicit wrapping/unwrapping of completion records 2022-05-03 01:09:29 +02:00
SourceTextModule.h LibJS: Remove implicit wrapping/unwrapping of completion records 2022-05-03 01:09:29 +02:00
SyntaxHighlighter.cpp LibJS: Remove a bunch of gratuitous JS namespace qualifiers 2022-04-03 15:19:33 +01:00
SyntaxHighlighter.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
SyntheticModule.cpp LibJS: Mark concrete method calls of Environment Records with ?/! 2022-05-25 00:25:23 +01:00
SyntheticModule.h LibJS: Add support for JSON modules 2022-01-30 17:40:20 +00:00
Token.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Token.h Everywhere: Explicitly specify the size in StringView constructors 2022-07-12 23:11:35 +02:00