Repository navigation
fix(0.81, macos): shadow color and scroll indicator crashes, two compiler warnings - #3132
Draft
Saad Najmi (Saadnajmi) wants to merge 6 commits into
Draft
Saad Najmi (Saadnajmi) wants to merge 6 commits into
Saad Najmi (Saadnajmi) wants to merge 6 commits into
Conversation
On macOS, RCTView declares shadowColor as an assign CGColorRef property, so it kept the color it was given without retaining it. That color is autoreleased, so by the time didUpdateShadow read it, it could already be freed, which crashed. Convert the color to an NSColor as soon as it's set, and keep that instead. Setting it to NULL clears the color. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
…llView RCTScrollViewManager exports scrollIndicatorInsets, verticalScrollIndicatorInsets and automaticallyAdjustsScrollIndicatorInsets on every platform, but on macOS RCTScrollView has no setters for them, so setting one from JavaScript crashed. Add no-op setters on macOS. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
…rfaceLayoutDirection values On macOS, RCTUIKit makes UIUserInterfaceLayoutDirection an alias of NSUserInterfaceLayoutDirection, but declared the LeftToRight and RightToLeft constants in a separate, unnamed enum. Comparing a layout direction with them, as RCTTextAttributes.mm does, mixes two enumeration types, which C++20 deprecates and clang reports with -Wdeprecated-anon-enum-enum-conversion. Define the constants as the NSUserInterfaceLayoutDirection values, like the type. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
…laration RCTInspectorNetworkReporter.h declares reportRequestFailed:cancelled: with a BOOL parameter, but the implementation took bool. They're the same type on arm64, but on x86_64 macOS and Mac Catalyst BOOL is signed char, so the definition didn't match its declaration and clang warned with -Wmismatched-parameter-types. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
react-native-macos@latest is 0.83 now, so tag 0.81 releases with 0.81-stable instead, as #2801 did for 0.79. Until then, the prepublish check in the NPM Publish (Dry Run) job fails on every 0.81-stable pull request, and would block the next 0.81 release. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary:
Backports these fixes to
0.81-stable:RCTViewkept the unretainedCGColorRefit was given, sodidUpdateShadowcould read a freed color and crash.scrollIndicatorInsets,verticalScrollIndicatorInsets, andautomaticallyAdjustsScrollIndicatorInsetssetters toRCTScrollViewon macOS, so setting those props from JavaScript doesn't crash.RCTUIKit.hasNSUserInterfaceLayoutDirectionvalues, which fixes-Wdeprecated-anon-enum-enum-conversioninRCTTextAttributes.mm.cancelledparameter inRCTInspectorNetworkReporter.mmaBOOL, like its header, which fixes-Wmismatched-parameter-typeson x86_64.It also adds a version plan for a patch release, and demotes 0.81 from
latestinnx.json(as #2801 did for 0.79), sincereact-native-macos@latestis 0.83 now. Without that, the NPM Publish (Dry Run) check fails on every0.81-stablePR, and would block the release. Office has been patching these in its copy of React Native macOS, and needs them in a 0.81 release so it can stop.Test Plan: