Skip to content

Commit 6c385c6

Browse files
sammy-SCfacebook-github-bot
authored andcommitted
Fix race condition in SurfaceHandler (#37088)
Summary: Pull Request resolved: #37088 changelog: [internal] This is a race condition. parameters need to be copied out, otherwise they might be changed during read. Reviewed By: luluwu2032 Differential Revision: D45272086 fbshipit-source-id: 9043762dfaaf61d08e187c0d83f743e991a94ed1
1 parent ec1ab73 commit 6c385c6

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

packages/react-native/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,15 @@ void SurfaceHandler::stop() const noexcept {
112112
}
113113

114114
void SurfaceHandler::setDisplayMode(DisplayMode displayMode) const noexcept {
115+
auto parameters = Parameters{};
115116
{
116117
std::unique_lock lock(parametersMutex_);
117118
if (parameters_.displayMode == displayMode) {
118119
return;
119120
}
120121

121122
parameters_.displayMode = displayMode;
123+
parameters = parameters_;
122124
}
123125

124126
{
@@ -129,10 +131,10 @@ void SurfaceHandler::setDisplayMode(DisplayMode displayMode) const noexcept {
129131
}
130132

131133
link_.uiManager->setSurfaceProps(
132-
parameters_.surfaceId,
133-
parameters_.moduleName,
134-
parameters_.props,
135-
parameters_.displayMode);
134+
parameters.surfaceId,
135+
parameters.moduleName,
136+
parameters.props,
137+
parameters.displayMode);
136138

137139
applyDisplayMode(displayMode);
138140
}

0 commit comments

Comments
 (0)