Branch: refs/heads/webkitglib/2.52
Home: https://github.com/WebKit/WebKit
Commit: 9356c5a4a7960fc1a609000925e52c14ec9dc0ae
https://github.com/WebKit/WebKit/commit/9356c5a4a7960fc1a609000925e52c14ec9dc0ae
Author: Yusuke Suzuki <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
M Source/JavaScriptCore/parser/ParserArena.h
M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
M Source/JavaScriptCore/runtime/JSStringJoiner.h
M Source/JavaScriptCore/runtime/MathCommon.h
M Source/JavaScriptCore/wasm/WasmFormat.h
M Source/WTF/wtf/PlatformHave.h
Log Message:
-----------
Cherry-pick 309220@main (35208109db84).
https://bugs.webkit.org/show_bug.cgi?id=309876
[JSC] Add tryConvertToStrictInt32
https://bugs.webkit.org/show_bug.cgi?id=309876
rdar://172451302
Reviewed by Dan Hecht and Justin Michaud.
This patch adds tryConvertToStrictInt32, which quickly decides whether
we can convert double to StrictInt32. This can be efficiently
implemented with ARM64 fjcvtzs.
* Source/JavaScriptCore/parser/ParserArena.h:
(JSC::IdentifierArena::makeNumericIdentifier):
* Source/JavaScriptCore/runtime/JSCJSValueInlines.h:
(JSC::JSValue::JSValue):
(JSC::JSValue::toBigIntOrInt32 const):
* Source/JavaScriptCore/runtime/JSStringJoiner.h:
(JSC::JSStringJoiner::appendNumber):
* Source/JavaScriptCore/runtime/MathCommon.h:
(JSC::tryConvertToStrictInt32):
(JSC::canBeStrictInt32): Deleted.
(JSC::canBeInt32): Deleted.
* Source/JavaScriptCore/wasm/WasmFormat.h:
(JSC::Wasm::internalizeExternref):
* Source/WTF/wtf/PlatformHave.h:
Canonical link: https://commits.webkit.org/309220@main
Canonical link: https://commits.webkit.org/305877.699@webkitglib/2.52
Commit: 7bcdeeaa119b7b4d797d8523aa468c0a0bed5e94
https://github.com/WebKit/WebKit/commit/7bcdeeaa119b7b4d797d8523aa468c0a0bed5e94
Author: Yusuke Suzuki <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
M Source/JavaScriptCore/runtime/MathCommon.h
Log Message:
-----------
Cherry-pick 309422@main (a9539aeb5791).
https://bugs.webkit.org/show_bug.cgi?id=310118
[JSC] Fix tryConvertToStrictInt32's duplicate work
https://bugs.webkit.org/show_bug.cgi?id=310118
rdar://172760056
Reviewed by Yijia Huang.
Previous patch had an issue that we convert double to int32_t again
unnecessarily. This patch fixes this efficiency problem.
* Source/JavaScriptCore/runtime/MathCommon.h:
(JSC::tryConvertToStrictInt32):
Canonical link: https://commits.webkit.org/309422@main
Canonical link: https://commits.webkit.org/305877.700@webkitglib/2.52
Commit: 3a312f5ed90e0ae0a88856a203768e59bf224813
https://github.com/WebKit/WebKit/commit/3a312f5ed90e0ae0a88856a203768e59bf224813
Author: Yusuke Suzuki <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
M Source/JavaScriptCore/dfg/DFGOperations.cpp
M Source/JavaScriptCore/runtime/CommonSlowPaths.cpp
M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
M Source/JavaScriptCore/runtime/MathCommon.cpp
M Source/JavaScriptCore/runtime/MathCommon.h
M Source/JavaScriptCore/runtime/NumberPrototype.cpp
M Source/JavaScriptCore/wasm/WasmFormat.h
M Source/WTF/wtf/MathExtras.h
M Tools/TestWebKitAPI/CMakeLists.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WTF/TruncateFloat.cpp
Log Message:
-----------
Cherry-pick 309786@main (bd8dde5e762e).
https://bugs.webkit.org/show_bug.cgi?id=310490
[JSC] Remove UB for truncate-double-to-int32 by injecting conversion inline
asm
https://bugs.webkit.org/show_bug.cgi?id=310490
rdar://173114293
Reviewed by Keith Miller and Justin Michaud.
Recent clang does optimization based on this UB, breaking JSC when these
UB is used. But this is **really hot** code in JSC, thus we should not
use something slow-but-correct implementation. We should keep what we
are getting as a codegen as is while removing UB to prevent compilers
from breaking the meaning.
This patch introduces helper functions which convers fp to integers, and
just use these helper functions. They are just one inline asm in many
cases. The purpose is just making sure that we should have solid
semantics (not UB) for this one conversion. And the rest of code using
this is just fine if this is not UB. We move tryConvertToStrictInt32 to
WTF too, and make sure they are not having UB in slow path too. We
implemented optimized inline asm for x64 / ARM64 so that these
architectures do not see the difference from the currently generated code.
We also add WTF_PROVEN_TRUE. This leverages __builtin_constant_p to do
range analysis onto the input, so we do not lose the opportunities of
constant folding.
Tests: Tools/TestWebKitAPI/CMakeLists.txt
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Tools/TestWebKitAPI/Tests/WTF/TruncateFloat.cpp
* Source/JavaScriptCore/dfg/DFGOperations.cpp:
(JSC::DFG::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:
(JSC::updateArithProfileForUnaryArithOp):
(JSC::updateArithProfileForBinaryArithOp):
(JSC::JSC_DEFINE_COMMON_SLOW_PATH):
* Source/JavaScriptCore/runtime/JSCJSValueInlines.h:
(JSC::JSValue::tryGetAsUint32Index):
(JSC::JSValue::tryGetAsInt32):
* Source/JavaScriptCore/runtime/MathCommon.cpp:
(JSC::Math::JSC_DEFINE_NOEXCEPT_JIT_OPERATION):
* Source/JavaScriptCore/runtime/MathCommon.h:
(JSC::tryConvertToStrictInt32): Deleted.
* Source/JavaScriptCore/runtime/NumberPrototype.cpp:
(JSC::toStringWithRadix):
(JSC::numberToStringInternal):
* Source/JavaScriptCore/wasm/WasmFormat.h:
(JSC::Wasm::internalizeExternref):
* Source/WTF/wtf/MathExtras.h:
(WTF::truncateDoubleToInt32):
(WTF::truncateDoubleToInt64):
(WTF::truncateDoubleToUint32):
(WTF::truncateDoubleToUint64):
(WTF::truncateFloatToInt32):
(WTF::truncateFloatToInt64):
(WTF::truncateFloatToUint32):
(WTF::truncateFloatToUint64):
(WTF::tryConvertToStrictInt32):
* Tools/TestWebKitAPI/CMakeLists.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WTF/TruncateFloat.cpp: Added.
(TestWebKitAPI::opaque):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToInt32_InRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToInt32_InRange_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToInt32_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToUint32_InRange)):
(TestWebKitAPI::TEST(WTF_MathExtras,
TruncateDoubleToUint32_InRange_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToUint32_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToInt64_InRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToInt64_InRange_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToInt64_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToUint64_InRange)):
(TestWebKitAPI::TEST(WTF_MathExtras,
TruncateDoubleToUint64_InRange_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateDoubleToUint64_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToInt32_InRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToInt32_InRange_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToInt32_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToUint32_InRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToUint32_InRange_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToUint32_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToInt64_InRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToInt64_InRange_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToInt64_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToUint64_InRange)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToUint64_InRange_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TruncateFloatToUint64_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras,
TryConvertToStrictInt32_ExactIntegers)):
(TestWebKitAPI::TEST(WTF_MathExtras,
TryConvertToStrictInt32_ExactIntegers_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TryConvertToStrictInt32_NonIntegers)):
(TestWebKitAPI::TEST(WTF_MathExtras,
TryConvertToStrictInt32_NonIntegers_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras,
TryConvertToStrictInt32_SpecialValues)):
(TestWebKitAPI::TEST(WTF_MathExtras,
TryConvertToStrictInt32_SpecialValues_Opaque)):
(TestWebKitAPI::TEST(WTF_MathExtras, TryConvertToStrictInt32_OutOfRange)):
(TestWebKitAPI::TEST(WTF_MathExtras,
TryConvertToStrictInt32_OutOfRange_Opaque)):
Canonical link: https://commits.webkit.org/309786@main
Canonical link: https://commits.webkit.org/305877.701@webkitglib/2.52
Commit: 627c96bd53e8d58e396aec401bcf46f0e034eeb1
https://github.com/WebKit/WebKit/commit/627c96bd53e8d58e396aec401bcf46f0e034eeb1
Author: Yusuke Suzuki <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
M Source/WTF/wtf/MathExtras.h
Log Message:
-----------
Cherry-pick 309806@main (e5256d97edc2).
https://bugs.webkit.org/show_bug.cgi?id=310581
[WTF] Clean up fp -> integer trunc implementations in x64
https://bugs.webkit.org/show_bug.cgi?id=310581
rdar://173192980
Reviewed by Mark Lam.
Use x64 intrinsics instead. We intentional put WTF_PROVEN_TRUE check
duplicate for CPU(ARM64) and fallback cases to make sure that CPU(ARM64)
side code dense and concise. Once corresponding intrinsics are
introduced, just replace this part entirely in ARM64 too.
* Source/WTF/wtf/MathExtras.h:
(WTF::truncateDoubleToInt32):
(WTF::truncateDoubleToInt64):
(WTF::truncateDoubleToUint32):
(WTF::truncateDoubleToUint64):
(WTF::truncateFloatToInt32):
(WTF::truncateFloatToInt64):
(WTF::truncateFloatToUint32):
(WTF::truncateFloatToUint64):
Canonical link: https://commits.webkit.org/309806@main
Canonical link: https://commits.webkit.org/305877.702@webkitglib/2.52
Commit: a4b39d2516074bec95d3a2f0dd13ebec4c04154b
https://github.com/WebKit/WebKit/commit/a4b39d2516074bec95d3a2f0dd13ebec4c04154b
Author: Yusuke Suzuki <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
M Source/WTF/wtf/CurrentTime.cpp
M Source/WTF/wtf/JSONValues.cpp
M Source/WTF/wtf/MemoryPressureHandler.cpp
M Source/WTF/wtf/StatisticsManager.cpp
M Source/WTF/wtf/text/TextStream.cpp
M Source/WebCore/html/ImageDocument.cpp
M Source/WebCore/platform/animation/AnimationUtilities.h
M Source/WebCore/platform/audio/AudioResamplerKernel.cpp
M Source/WebCore/platform/graphics/FormatConverter.cpp
M Source/WebCore/platform/graphics/GraphicsContext.cpp
M Source/WebCore/platform/graphics/IntRect.cpp
M Source/WebCore/platform/graphics/IntSize.h
M Source/WebCore/platform/graphics/ShadowBlur.cpp
Log Message:
-----------
Cherry-pick 309964@main (aa5eadc0c2eb).
https://bugs.webkit.org/show_bug.cgi?id=310697
Avoid fp->integer UB throughout WebKit repository
https://bugs.webkit.org/show_bug.cgi?id=310697
rdar://173311131
Reviewed by Chris Dumez and Dan Hecht.
Apply 309786@main change throughout the WebKit repository. When
converting fp to integers, if it is not fitting in a range of integer's
representable range, it is UB. And the recent clang is leverageing this
UB a bit too aggressively and causing breakage of semantics in the code
when it is used in an UB manner.
* Source/WTF/wtf/CurrentTime.cpp:
* Source/WTF/wtf/JSONValues.cpp:
(WTF::JSONImpl::Value::asInteger const):
* Source/WTF/wtf/MathExtras.h:
(WTF::truncateDoubleToInt32):
(WTF::truncateDoubleToInt64):
(WTF::truncateDoubleToUint32):
(WTF::truncateDoubleToUint64):
(WTF::truncateFloatToInt32):
(WTF::truncateFloatToInt64):
(WTF::truncateFloatToUint32):
(WTF::truncateFloatToUint64):
(WTF::tryConvertToStrictInt32):
* Source/WTF/wtf/MemoryPressureHandler.cpp:
(WTF::thresholdForMemoryKillOfActiveProcess):
(WTF::thresholdForMemoryKillOfInactiveProcess):
* Source/WTF/wtf/StatisticsManager.cpp:
(WTF::dumpHistogram):
* Source/WTF/wtf/text/TextStream.cpp:
(WTF::hasFractions):
* Source/WebCore/html/ImageDocument.cpp:
(WebCore::ImageDocument::imageClicked):
* Source/WebCore/platform/animation/AnimationUtilities.h:
(WebCore::blend):
* Source/WebCore/platform/audio/AudioResamplerKernel.cpp:
(WebCore::AudioResamplerKernel::getSourceSpan):
* Source/WebCore/platform/graphics/FormatConverter.cpp:
(WebCore::uint32_t>):
(WebCore::int32_t>):
* Source/WebCore/platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::computeRectsAndStrokeColorForLinesForText):
* Source/WebCore/platform/graphics/IntRect.cpp:
(WebCore::IntRect::scale):
* Source/WebCore/platform/graphics/IntSize.h:
(WebCore::IntSize::scale):
* Source/WebCore/platform/graphics/ShadowBlur.cpp:
(WebCore::calculateLobes):
Canonical link: https://commits.webkit.org/309964@main
Canonical link: https://commits.webkit.org/305877.703@webkitglib/2.52
Commit: 2069923256ee51e04aaccc1936d818eb07901420
https://github.com/WebKit/WebKit/commit/2069923256ee51e04aaccc1936d818eb07901420
Author: Chris Dumez <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
M Source/WTF/wtf/MathExtras.h
Log Message:
-----------
Cherry-pick 310270@main (dab059cbea78).
https://bugs.webkit.org/show_bug.cgi?id=311096
Drop redundant `std::isnan()` checks in MathExtras.h
https://bugs.webkit.org/show_bug.cgi?id=311096
Reviewed by Darin Adler.
Drop redundant `std::isnan()` checks in MathExtras.h. `!std::isfinite()`
already covers the NaN case.
* Source/WTF/wtf/MathExtras.h:
(WTF::truncateDoubleToInt32):
(WTF::truncateDoubleToInt64):
(WTF::truncateDoubleToUint32):
(WTF::truncateDoubleToUint64):
(WTF::truncateFloatToInt32):
(WTF::truncateFloatToInt64):
(WTF::truncateFloatToUint32):
(WTF::truncateFloatToUint64):
Canonical link: https://commits.webkit.org/310270@main
Canonical link: https://commits.webkit.org/305877.704@webkitglib/2.52
Commit: c75856f7742ba9f830b1d255a908cddd2b8c5fb3
https://github.com/WebKit/WebKit/commit/c75856f7742ba9f830b1d255a908cddd2b8c5fb3
Author: Sosuke Suzuki <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
M Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
M Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
M Source/JavaScriptCore/parser/ASTBuilder.h
M Source/JavaScriptCore/parser/Lexer.cpp
M Source/JavaScriptCore/runtime/HashMapHelper.h
M Source/JavaScriptCore/runtime/MathCommon.cpp
M Source/JavaScriptCore/runtime/TypedArrayAdaptors.h
Log Message:
-----------
Cherry-pick 313375@main (a3aa7524f30f).
https://bugs.webkit.org/show_bug.cgi?id=314884
[JSC] Use `truncateDoubleToInt32`/`64()` in more round-trip double-to-int
checks
https://bugs.webkit.org/show_bug.cgi?id=314884
Reviewed by Yusuke Suzuki.
This patch changes to use `truncateDoubleToInt32` and
`truncateDoubleToInt64` in
more round-trip double-to-int checks.
* Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:
(JSC::processClauseList):
* Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* Source/JavaScriptCore/parser/ASTBuilder.h:
(JSC::ASTBuilder::makeDivNode):
* Source/JavaScriptCore/parser/Lexer.cpp:
(JSC::tokenTypeForIntegerLikeToken):
* Source/JavaScriptCore/runtime/HashMapHelper.h:
(JSC::normalizeMapKey):
* Source/JavaScriptCore/runtime/MathCommon.cpp:
(JSC::isStrictInt32):
* Source/JavaScriptCore/runtime/TypedArrayAdaptors.h:
(JSC::IntegralTypedArrayAdaptor::toNativeFromDouble):
Canonical link: https://commits.webkit.org/313375@main
Canonical link: https://commits.webkit.org/305877.705@webkitglib/2.52
Commit: b775328c137ce25efd246ca030a6a95263dd51b4
https://github.com/WebKit/WebKit/commit/b775328c137ce25efd246ca030a6a95263dd51b4
Author: Sosuke Suzuki <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
A JSTests/stress/get-by-val-double-subscript-out-of-uint32-range.js
A JSTests/stress/jsonp-large-array-index.js
A JSTests/stress/number-tostring-methods-out-of-range-arguments.js
A JSTests/stress/parseint-large-result-int32-boxing.js
A JSTests/stress/string-from-code-point-out-of-range.js
M Source/JavaScriptCore/dfg/DFGOperations.cpp
M Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp
M Source/JavaScriptCore/runtime/JSCJSValue.h
M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
M Source/JavaScriptCore/runtime/LiteralParser.cpp
M Source/JavaScriptCore/runtime/NumberPrototype.cpp
M Source/JavaScriptCore/runtime/StringConstructor.cpp
Log Message:
-----------
Cherry-pick 314356@main (3825a1a93bbf).
https://bugs.webkit.org/show_bug.cgi?id=316051
[JSC] Fix undefined behavior in double-to-int conversions
https://bugs.webkit.org/show_bug.cgi?id=316051
Reviewed by Yusuke Suzuki.
Several call sites convert unbounded, caller-controlled doubles to narrow
integer types with a plain cast, which is undefined behavior when the
truncated value is not representable ([conv.fpint]). With inputs reachable
from JS (e.g. parseInt("80000000", 16), (1.5).toExponential(Infinity),
String.fromCodePoint(-1), o[2 ** 32]), every conversion fixed here trips
UBSan's float-cast-overflow check.
This is not purely theoretical: in Bun, this UB caused user-observable
bugs, e.g. parseInt("80000000", 16) returning a negative int32.
Make the conversions defined via truncateDoubleToInt32() /
truncateDoubleToUint32() / clampTo<unsigned>(), or by range-checking the
double before narrowing. No behavior change on current WebKit toolchains.
Tests: JSTests/stress/get-by-val-double-subscript-out-of-uint32-range.js
JSTests/stress/jsonp-large-array-index.js
JSTests/stress/number-tostring-methods-out-of-range-arguments.js
JSTests/stress/parseint-large-result-int32-boxing.js
JSTests/stress/string-from-code-point-out-of-range.js
* JSTests/stress/get-by-val-double-subscript-out-of-uint32-range.js: Added.
(shouldBe):
(get put):
* JSTests/stress/jsonp-large-array-index.js: Added.
(shouldBe):
* JSTests/stress/number-tostring-methods-out-of-range-arguments.js: Added.
(shouldBe):
* JSTests/stress/parseint-large-result-int32-boxing.js: Added.
(shouldBe):
(parseIntNoRadix):
* JSTests/stress/string-from-code-point-out-of-range.js: Added.
(shouldBe):
* Source/JavaScriptCore/dfg/DFGOperations.cpp:
(JSC::DFG::parseIntResult):
* Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):
* Source/JavaScriptCore/runtime/JSCJSValue.h:
(JSC::JSValue::getUInt32 const):
* Source/JavaScriptCore/runtime/LiteralParser.cpp:
(JSC::requires):
* Source/JavaScriptCore/runtime/NumberPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/StringConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
Canonical link: https://commits.webkit.org/314356@main
Canonical link: https://commits.webkit.org/305877.706@webkitglib/2.52
Commit: 5b52d671d2d8a520694a2dd68b6fc0b4d36e2577
https://github.com/WebKit/WebKit/commit/5b52d671d2d8a520694a2dd68b6fc0b4d36e2577
Author: Chris Dumez <[email protected]>
Date: 2026-06-06 (Sat, 06 Jun 2026)
Changed paths:
M Source/WebCore/Modules/cache/CacheStorageConnection.cpp
Log Message:
-----------
Cherry-pick 314445@main (09650e2c7ec5).
https://bugs.webkit.org/show_bug.cgi?id=316150
Fix undefined behavior in CacheStorageConnection::computeRecordBodySize()
https://bugs.webkit.org/show_bug.cgi?id=316150
Reviewed by Youenn Fablet.
The set() inside the ensure() lambda mutates the map mid-insert. This
can rehash and invalidate the iterator that ensure() then returns, so
the trailing .iterator->value reads from a stale bucket. It's also
redundant — ensure() stores the lambda's return value already.
* Source/WebCore/Modules/cache/CacheStorageConnection.cpp:
(WebCore::CacheStorageConnection::computeRecordBodySize):
Canonical link: https://commits.webkit.org/314445@main
Canonical link: https://commits.webkit.org/305877.707@webkitglib/2.52
Compare: https://github.com/WebKit/WebKit/compare/a6bc685a685c...5b52d671d2d8
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications