-
Notifications
You must be signed in to change notification settings - Fork 59
[Bug Fix] Fix Shape + fill color mismatch issue #777
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🤖 Augment PR SummarySummary: Fixes a Changes:
🤖 Was this summary useful? React with 👍 or 👎 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CFRange range = CFStringFind(target_description, CFSTR("Color.Resolved"), 0); | ||
| if (range.location != kCFNotFound) { | ||
| // First try the original cast, if it fails try with OpenSwiftUI's Color.Resolved | ||
| return swift_dynamicCast(dest, src, srcType, targetType, flags) || |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because swift_dynamicCast is being interposed, calling swift_dynamicCast(...) from inside my_swift_dynamicCast may resolve back to the interposer and recurse. Can you confirm this call path reliably reaches the original Swift runtime implementation in all build/linking modes?
Severity: high
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| // Interpose kdebug_is_enabled to always return true to perform Signpost testing with Instruments | ||
| { (const void *)my_kdebug_is_enabled, (const void *)kdebug_is_enabled }, | ||
| // Interpose swift_dynamicCast to handle casts to SwiftUI's internal Color.Resolved type to fix SwiftUI.ShapeLayerHelper visit check for Shape.fill API | ||
| { (const void *)my_swift_dynamicCast, (const void *)swift_dynamicCast }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interposing swift_dynamicCast affects every dynamic cast in the process, so any unexpected behavior here can have a wide blast radius beyond Shape.fill. Please double-check this file is only linked into the intended debug/test host (and not shipped in normal Example/production builds).
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| membershipExceptions = ( | ||
| interpose.c, | ||
| ); | ||
| target = 275751E22DEE1441003E467C /* TestingHost */; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This exception set marks interpose.c as a membershipException for the TestingHost target, even though OpenSwiftUIUITests uses TestingHost.app as TEST_HOST. Please verify the interposer is actually present in the host process where the shape rendering/casts occur.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #777 +/- ##
=======================================
Coverage ? 26.22%
=======================================
Files ? 649
Lines ? 40204
Branches ? 0
=======================================
Hits ? 10542
Misses ? 29662
Partials ? 0 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Close #775