Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2fd8f81aac4e867ffe107c0e1b3e34b1628c0953 https://github.com/WebKit/WebKit/commit/2fd8f81aac4e867ffe107c0e1b3e34b1628c0953 Author: Richard Robinson <richard_robins...@apple.com> Date: 2024-03-18 (Mon, 18 Mar 2024)
Changed paths: M Source/WebCore/editing/cocoa/HTMLConverter.h M Source/WebCore/editing/cocoa/HTMLConverter.mm M Source/WebKit/WebProcess/WebPage/Cocoa/UnifiedTextReplacementController.mm Log Message: ----------- [Unified Text Replacement] Replacing text with non-trivial attributed string attributes can sometimes cause a crash https://bugs.webkit.org/show_bug.cgi?id=271105 rdar://123712304 Reviewed by Aditya Keerthi. Currently, the original selected range isn't guaranteed to fit within the context attributed string, due to the slight differences between HTMLConverter and TextIterator. To fix, `editingAttributedString` will now be used, which uses TextIterator itself. Also add an assertion to ensure this postcondition is true. The replaced, expanded selection range was also being formed incorrectly, impacting subsequent calls of the function. A partial fix is done by using the context string instead of the replaced string, since the range is relative to the former. Additionally, the `extendedBoundaryPoint` method is altered to use a slightly different mechanism of expanding based on the number of characters, to completely fix this issue. Also add a precondition check to ensure the range passed in as the parameter is a valid range within the context range. * Source/WebCore/editing/cocoa/HTMLConverter.h: * Source/WebCore/editing/cocoa/HTMLConverter.mm: (WebCore::editingAttributedString): * Source/WebKit/WebProcess/WebPage/Cocoa/UnifiedTextReplacementController.mm: (WebKit::extendedBoundaryPoint): (WebKit::UnifiedTextReplacementController::willBeginTextReplacementSession): (WebKit::UnifiedTextReplacementController::textReplacementSessionDidReceiveTextWithReplacementRange): Canonical link: https://commits.webkit.org/276313@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes