<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>223753</bug_id>
          
          <creation_ts>2021-03-25 11:15:23 -0700</creation_ts>
          <short_desc>Crash in InsertTextCommand::positionInsideTextNode</short_desc>
          <delta_ts>2021-05-07 01:08:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211793</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ali Juma">ajuma</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-feeder</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gpoo</cc>
    
    <cc>product-security</cc>
    
    <cc>rbuis</cc>
    
    <cc>rniwa</cc>
    
    <cc>rohitrao</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1743837</commentid>
    <comment_count>0</comment_count>
      <attachid>424262</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2021-03-25 11:15:23 -0700</bug_when>
    <thetext>Created attachment 424262
Minimal test case

Filing this as a security bug since it was found using a fuzzer; there&apos;s no disclosure deadline for this bug.

This reproduces in an ASan build of WebKitTestRunner, and also in STP 122.

Stack:
=================================================================
==79602==ERROR: AddressSanitizer: SEGV on unknown address 0x00000000001c (pc 0x00062fcb967e bp 0x7ffee96cabd0 sp 0x7ffee96cab20 T0)
==79602==The signal is caused by a READ memory access.
==79602==Hint: address points to the zero page.
    #0 0x62fcb967d in WTF::OptionSet&lt;WebCore::Node::NodeFlag&gt;::containsAny(WTF::OptionSet&lt;WebCore::Node::NodeFlag&gt;) const (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x18d67d)
    #1 0x62fcb9559 in WTF::OptionSet&lt;WebCore::Node::NodeFlag&gt;::contains(WebCore::Node::NodeFlag) const (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x18d559)
    #2 0x6333ef9e2 in WebCore::InsertTextCommand::positionInsideTextNode(WebCore::Position const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x38c39e2)
    #3 0x6333f0b1c in WebCore::InsertTextCommand::doApply() (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x38c4b1c)
    #4 0x633340d42 in WebCore::CompositeEditCommand::applyCommandToComposite(WTF::Ref&lt;WebCore::CompositeEditCommand, WTF::RawPtrTraits&lt;WebCore::CompositeEditCommand&gt; &gt;&amp;&amp;, WebCore::VisibleSelection const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x3814d42)
    #5 0x63344f1c1 in WebCore::TypingCommand::insertTextRunWithoutNewlines(WTF::String const&amp;, bool) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x39231c1)
    #6 0x633473f5d in WebCore::TypingCommandLineOperation::operator()(unsigned long, unsigned long, bool) const (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x3947f5d)
    #7 0x63344eef0 in WebCore::TypingCommand::insertText(WTF::String const&amp;, bool) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x3922ef0)
    #8 0x63344c7fc in WebCore::TypingCommand::insertTextAndNotifyAccessibility(WTF::String const&amp;, bool) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x39207fc)
    #9 0x633325af4 in WebCore::CompositeEditCommand::apply() (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x37f9af4)
    #10 0x63342f7f9 in WebCore::TextInsertionBaseCommand::applyTextInsertionCommand(WebCore::Frame*, WebCore::TextInsertionBaseCommand&amp;, WebCore::VisibleSelection const&amp;, WebCore::VisibleSelection const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x39037f9)
    #11 0x63344c5e2 in WebCore::TypingCommand::insertText(WebCore::Document&amp;, WTF::String const&amp;, WebCore::VisibleSelection const&amp;, unsigned int, WebCore::TypingCommand::TextCompositionType) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x39205e2)
    #12 0x6333d5a8c in WebCore::executeInsertText(WebCore::Frame&amp;, WebCore::Event*, WebCore::EditorCommandSource, WTF::String const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x38a9a8c)
    #13 0x63303e5f3 in WebCore::Document::execCommand(WTF::String const&amp;, bool, WTF::String const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x35125f3)
    #14 0x6305005d1 in WebCore::jsDocumentPrototypeFunction_execCommandBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSDocument*) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x9d45d1)
    #15 0x6305000cb in long long WebCore::IDLOperation&lt;WebCore::JSDocument&gt;::call&lt;&amp;(WebCore::jsDocumentPrototypeFunction_execCommandBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSDocument*)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::JSGlobalObject&amp;, JSC::CallFrame&amp;, char const*) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x9d40cb)
    #16 0x27518fa011d7  (&lt;unknown module&gt;)
    #17 0x64c0e1c90 in llint_entry (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xb4cc90)
    #18 0x64c0c6ca8 in vmEntryToJavaScript (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xb31ca8)
    #19 0x64d8585b0 in JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x22c35b0)
    #20 0x64def44cf in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x295f4cf)
    #21 0x64def488b in JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x295f88b)
    #22 0x63289cf08 in WebCore::JSExecState::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x2d70f08)
    #23 0x63289c531 in WebCore::JSCallbackData::invokeCallback(WebCore::JSDOMGlobalObject&amp;, JSC::JSObject*, JSC::JSValue, JSC::MarkedArgumentBuffer&amp;, WebCore::JSCallbackData::CallbackType, JSC::PropertyName, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x2d70531)
    #24 0x630011eef in WebCore::JSCallbackDataStrong::invokeCallback(JSC::JSValue, JSC::MarkedArgumentBuffer&amp;, WebCore::JSCallbackData::CallbackType, JSC::PropertyName, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x4e5eef)
    #25 0x630ec9d40 in WebCore::JSRequestAnimationFrameCallback::handleEvent(double) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x139dd40)
    #26 0x63325e3f3 in WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks(WTF::Seconds) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x37323f3)
    #27 0x634196a02 in WebCore::Page::forEachDocument(WTF::Function&lt;void (WebCore::Document&amp;)&gt; const&amp;) const (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x466aa02)
    #28 0x6341a25a1 in WebCore::Page::updateRendering()::$_17::operator()(WebCore::RenderingUpdateStep, WTF::Function&lt;void (WebCore::Document&amp;)&gt; const&amp;) const (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x46765a1)
    #29 0x6341a1f84 in WebCore::Page::updateRendering() (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebCore.framework/Versions/A/WebCore:x86_64+0x4675f84)
    #30 0x621caa511 in WebKit::TiledCoreAnimationDrawingArea::updateRendering(WebKit::TiledCoreAnimationDrawingArea::UpdateRenderingType) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebKit.framework/Versions/A/WebKit:x86_64+0x1caa511)
    #31 0x7fff36e99e5b in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation:x86_64+0x83e5b)
    #32 0x7fff36e99d8b in __CFRunLoopDoObservers (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation:x86_64+0x83d8b)
    #33 0x7fff36e9898d in CFRunLoopRunSpecific (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation:x86_64+0x8298d)
    #34 0x7fff395561c7 in -[NSRunLoop(NSRunLoop) runMode:beforeDate:] (/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation:x86_64+0x601c7)
    #35 0x7fff39608c6e in -[NSRunLoop(NSRunLoop) run] (/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation:x86_64+0x112c6e)
    #36 0x7fff710754e9 in _xpc_objc_main.cold.4 (/usr/lib/system/libxpc.dylib:x86_64+0x164e9)
    #37 0x7fff7107542f in _xpc_objc_main (/usr/lib/system/libxpc.dylib:x86_64+0x1642f)
    #38 0x7fff71074f62 in xpc_main (/usr/lib/system/libxpc.dylib:x86_64+0x15f62)
    #39 0x620f0f0a3 in WebKit::XPCServiceMain(int, char const**) (/Users/chrome-bot/clusterfuzz/bot/builds/chrome-ios-webkit-to-fuzz_ios-webkit-to-fuzz_cb292771138f3c7c4bb12f2df778e2b1c42b4cd7/revisions/WebKitMacOS/WebKit.framework/Versions/A/WebKit:x86_64+0xf0f0a3)
    #40 0x7fff70e23cc8 in start (/usr/lib/system/libdyld.dylib:x86_64+0x1acc8)
==79602==Register values:
rax = 0x0000100000000000  rbx = 0x00007ffee96cab60  rcx = 0x0000100000000000  rdx = 0x0000000000000000
rdi = 0x000000000000001c  rsi = 0x0000000000000002  rbp = 0x00007ffee96cabd0  rsp = 0x00007ffee96cab20
 r8 = 0x0000100000000000   r9 = 0x0000000000000000  r10 = 0xffffffffffffffff  r11 = 0xfffffffffffffe60
r12 = 0x00001fffdd2d9564  r13 = 0x00007ffee96cab40  r14 = 0x00007ffee96cab20  r15 = 0x0000000000000000
=========
Clusterfuzz-id: 5721820586901504</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743838</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-25 11:15:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/75844794&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746334</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-01 17:18:19 -0700</bug_when>
    <thetext>More concise test case:
&lt;style&gt;
  :empty {
    -webkit-appearance: checkbox;
  }
&lt;/style&gt;
&lt;script&gt;
  onload = () =&gt; {
    document.body.appendChild(document.createElement(&apos;iframe&apos;));
    let n0 = document.createElement(&apos;tr&apos;);
    document.body.appendChild(n0);
    n0.appendChild(document.createElement(&apos;div&apos;));
    document.body.appendChild(document.createElement(&apos;tr&apos;));
    document.execCommand(&apos;SelectAll&apos;);
    document.designMode = &apos;on&apos;;
    document.execCommand(&apos;InsertText&apos;, false, &apos;&apos;);
  };
&lt;/script&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747401</commentid>
    <comment_count>3</comment_count>
      <attachid>425272</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-06 06:31:45 -0700</bug_when>
    <thetext>Created attachment 425272
Reduced testcase

Just copying it from comment 2.

This is also reproducible on Linux GTK.

On debug, we hit the following assert :

ASSERTION FAILED: ancestor
https://webkit-search.igalia.com/webkit/rev/8c31d75d471dfa8cffb95e0ec9cae9b4703503df/Source/WebCore/dom/Position.cpp#1570
#0  WTFCrash() () at ../../Source/WTF/wtf/Assertions.cpp:295
#1  0x00007fd07b2911f1 in CRASH_WITH_INFO(...) ()
    at DerivedSources/ForwardingHeaders/wtf/Assertions.h:713
#2  0x00007fd07e2addca in WebCore::positionInParentBeforeNode(WebCore::Node*)
    (node=0x7fd070e06900) at ../../Source/WebCore/dom/Position.cpp:1570
#3  0x00007fd07e3d8989 in WebCore::InsertTextCommand::doApply() (this=
    0x7fd070d435c8) at ../../Source/WebCore/editing/InsertTextCommand.cpp:177
#4  0x00007fd0800eb740 in WebCore::CompositeEditCommand::applyCommandToComposite(WTF::Ref&lt;WebCore::CompositeEditCommand, WTF::RawPtrTraits&lt;WebCore::CompositeEditCommand&gt; &gt;&amp;&amp;, WebCore::VisibleSelection const&amp;)
    (this=0x7fd016a94a00, command=..., selection=...)
    at ../../Source/WebCore/editing/CompositeEditCommand.cpp:485
#5  0x00007fd07e4109b2 in WebCore::TypingCommand::insertTextRunWithoutNewlines(WTF::String const&amp;, bool)
    (this=0x7fd016a94a00, text=..., selectInsertedText=false)
    at ../../Source/WebCore/editing/TypingCommand.cpp:540
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747413</commentid>
    <comment_count>4</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-06 07:17:38 -0700</bug_when>
    <thetext>So positionInParentBeforeNode receives an orphan TR. The endingSelection&apos;s start is set to that TR by mergeParagraphs() and then detached from the tree by removePreviouslySelectedEmptyTableRows():

https://webkit-search.igalia.com/webkit/rev/8c31d75d471dfa8cffb95e0ec9cae9b4703503df/Source/WebCore/editing/DeleteSelectionCommand.cpp#943

Below is a basic debug session:

Thread 1 received signal SIGSEGV, Segmentation fault.
WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:295
(rr) reverse-f
(rr) 
(rr) 
https://webkit-search.igalia.com/webkit/rev/8c31d75d471dfa8cffb95e0ec9cae9b4703503df/Source/WebCore/dom/Position.cpp#1570
1570	    ASSERT(ancestor);
(rr)  p node-&gt;parentNode()
$1 = (WebCore::ContainerNode *) 0x0
(rr) p showTree(node)
*TR	0x7fd070e06900 (renderer (nil)) 
$2 = void
(rr) reverse-f
https://webkit-search.igalia.com/webkit/rev/8c31d75d471dfa8cffb95e0ec9cae9b4703503df/Source/WebCore/editing/InsertTextCommand.cpp#177
(rr) p showTree(endingSelection().start())
*TR	0x7fd070e06900 (renderer (nil)) 
legacy, offset, offset:0
$3 = void
(rr) watch -l endingSelection().m_start
(rr) rc
(rr) delete
(rr) reverse-f
(rr) 
(rr) 
(rr) 
(rr) 
(rr) 
(rr)
https://webkit-search.igalia.com/webkit/rev/8c31d75d471dfa8cffb95e0ec9cae9b4703503df/Source/WebCore/editing/CompositeEditCommand.cpp#1504
(rr) p showTree(destination)
BODY	0x7fd070e041c0 (renderer 0x7fd070e11800) 
*	TR	0x7fd070e06900 (renderer 0x7fd070e05a40) 
	TR	0x7fd070e06a20 (renderer 0x7fd070e07380) 
legacy, offset, offset:0
$4 = void
(rr) bt
#0  0x00007fd0800f1d60 in WebCore::CompositeEditCommand::moveParagraphs(WebCore::VisiblePosition const&amp;, WebCore::VisiblePosition const&amp;, WebCore::VisiblePosition const&amp;, bool, bool)
    (this=0x7fd016a9e6c0, startOfParagraphToMove=..., endOfParagraphToMove=..., destination=..., preserveSelection=false, preserveStyle=false)
    at ../../Source/WebCore/editing/CompositeEditCommand.cpp:1487
#1  0x00007fd0800f1073 in WebCore::CompositeEditCommand::moveParagraph(WebCore::VisiblePosition const&amp;, WebCore::VisiblePosition const&amp;, WebCore::VisiblePosition const&amp;, bool, bool)
    (this=0x7fd016a9e6c0, startOfParagraphToMove=..., endOfParagraphToMove=..., destination=..., preserveSelection=false, preserveStyle=false)
    at ../../Source/WebCore/editing/CompositeEditCommand.cpp:1391
#2  0x00007fd07e3774f8 in WebCore::DeleteSelectionCommand::mergeParagraphs() (this=0x7fd016a9e6c0)
    at ../../Source/WebCore/editing/DeleteSelectionCommand.cpp:759
#3  0x00007fd07e37850f in WebCore::DeleteSelectionCommand::doApply() (this=0x7fd016a9e6c0)
    at ../../Source/WebCore/editing/DeleteSelectionCommand.cpp:943
#4  0x00007fd0800eb5fc in WebCore::CompositeEditCommand::applyCommandToComposite(WTF::Ref&lt;WebCore::EditCommand, WTF::RawPtrTraits&lt;WebCore::EditCommand&gt; &gt;&amp;&amp;) (this=0x7fd070d435c8, command=...) at ../../Source/WebCore/editing/CompositeEditCommand.cpp:470
#5  0x00007fd0800eddc5 in WebCore::CompositeEditCommand::deleteSelection(bool, bool, bool, bool, bool)
    (this=0x7fd070d435c8, smartDelete=false, mergeBlocksAfterDelete=true, replace=true, expandForSpecialElements=false, sanitizeMarkup=false)
    at ../../Source/WebCore/editing/CompositeEditCommand.cpp:839
#6  0x00007fd07e3d87ba in WebCore::InsertTextCommand::doApply() (this=0x7fd070d435c8) at ../../Source/WebCore/editing/InsertTextCommand.cpp:143
#7  0x00007fd0800eb740 in WebCore::CompositeEditCommand::applyCommandToComposite(WTF::Ref&lt;WebCore::CompositeEditCommand, WTF::RawPtrTraits&lt;WebCore::CompositeEditCommand&gt; &gt;&amp;&amp;, WebCore::VisibleSelection const&amp;) (this=0x7fd016a94a00, command=..., selection=...)
    at ../../Source/WebCore/editing/CompositeEditCommand.cpp:485
#8  0x00007fd07e4109b2 in WebCore::TypingCommand::insertTextRunWithoutNewlines(WTF::String const&amp;, bool)
    (this=0x7fd016a94a00, text=..., selectInsertedText=false) at ../../Source/WebCore/editing/TypingCommand.cpp:540
--Type &lt;RET&gt; for more, q to quit, c to continue without paging--c
#9  0x00007fd07e419284 in WebCore::TypingCommandLineOperation::operator()(unsigned long, unsigned long, bool) const (this=0x7ffceccb8c20, lineOffset=0, lineLength=0, isLastLine=true) at ../../Source/WebCore/editing/TypingCommand.cpp:69
#10 0x00007fd07e41c7fe in WebCore::forEachLineInString&lt;WebCore::TypingCommandLineOperation&gt;(WTF::String const&amp;, WebCore::TypingCommandLineOperation const&amp;) (string=..., operation=...) at ../../Source/WebCore/editing/TextInsertionBaseCommand.h:60
#11 0x00007fd07e410745 in WebCore::TypingCommand::insertText(WTF::String const&amp;, bool) (this=0x7fd016a94a00, text=..., selectInsertedText=false) at ../../Source/WebCore/editing/TypingCommand.cpp:519
(rr) watch -l ((Node)*0x7fd070e06900)-&gt;m_parentNode
(rr) c
(rr) delete
(rr) reverse-f
(rr) reverse-f
(rr) 
(rr) 
(rr) 
(rr) 
(rr) 
(rr) 
https://webkit-search.igalia.com/webkit/rev/8c31d75d471dfa8cffb95e0ec9cae9b4703503df/Source/WebCore/editing/DeleteSelectionCommand.cpp#777
(rr) p showTree(row)
BODY	0x7fd070e041c0 (renderer 0x7fd070e11800) 
*	TR	0x7fd070e06900 (renderer 0x7fd070e05a40) 
	TR	0x7fd070e06a20 (renderer 0x7fd070e07380) 
$5 = void
(rr) p m_startTableRow
$6 = {... , m_ptr = 0x0}
(rr) p showTree((Node*)m_endTableRow)
BODY	0x7fd070e041c0 (renderer 0x7fd070e11800) 
	TR	0x7fd070e06900 (renderer 0x7fd070e05a40) 
*	TR	0x7fd070e06a20 (renderer 0x7fd070e07380) 
$7 = void
(rr) bt
#0  0x00007fd07e3777ae in WebCore::DeleteSelectionCommand::removePreviouslySelectedEmptyTableRows() (this=0x7fd016a9e6c0)
    at ../../Source/WebCore/editing/DeleteSelectionCommand.cpp:777
#1  0x00007fd07e37851e in WebCore::DeleteSelectionCommand::doApply() (this=0x7fd016a9e6c0)
    at ../../Source/WebCore/editing/DeleteSelectionCommand.cpp:945
#2  0x00007fd0800eb5fc in WebCore::CompositeEditCommand::applyCommandToComposite(WTF::Ref&lt;WebCore::EditCommand, WTF::RawPtrTraits&lt;WebCore::EditCommand&gt; &gt;&amp;&amp;) (this=0x7fd070d435c8, command=...) at ../../Source/WebCore/editing/CompositeEditCommand.cpp:470
#3  0x00007fd0800eddc5 in WebCore::CompositeEditCommand::deleteSelection(bool, bool, bool, bool, bool)
    (this=0x7fd070d435c8, smartDelete=false, mergeBlocksAfterDelete=true, replace=true, expandForSpecialElements=false, sanitizeMarkup=false)
    at ../../Source/WebCore/editing/CompositeEditCommand.cpp:839
#4  0x00007fd07e3d87ba in WebCore::InsertTextCommand::doApply() (this=0x7fd070d435c8) at ../../Source/WebCore/editing/InsertTextCommand.cpp:143
#5  0x00007fd0800eb740 in WebCore::CompositeEditCommand::applyCommandToComposite(WTF::Ref&lt;WebCore::CompositeEditCommand, WTF::RawPtrTraits&lt;WebCore::CompositeEditCommand&gt; &gt;&amp;&amp;, WebCore::VisibleSelection const&amp;) (this=0x7fd016a94a00, command=..., selection=...)
    at ../../Source/WebCore/editing/CompositeEditCommand.cpp:485
#6  0x00007fd07e4109b2 in WebCore::TypingCommand::insertTextRunWithoutNewlines(WTF::String const&amp;, bool)
    (this=0x7fd016a94a00, text=..., selectInsertedText=false) at ../../Source/WebCore/editing/TypingCommand.cpp:540
#7  0x00007fd07e419284 in WebCore::TypingCommandLineOperation::operator()(unsigned long, unsigned long, bool) const
    (this=0x7ffceccb8c20, lineOffset=0, lineLength=0, isLastLine=true) at ../../Source/WebCore/editing/TypingCommand.cpp:69
#8  0x00007fd07e41c7fe in WebCore::forEachLineInString&lt;WebCore::TypingCommandLineOperation&gt;(WTF::String const&amp;, WebCore::TypingCommandLineOperation const&amp;) (string=..., operation=...) at ../../Source/WebCore/editing/TextInsertionBaseCommand.h:60
#9  0x00007fd07e410745 in WebCore::TypingCommand::insertText(WTF::String const&amp;, bool) (this=0x7fd016a94a00, text=..., selectInsertedText=false)
    at ../../Source/WebCore/editing/TypingCommand.cpp:519</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747440</commentid>
    <comment_count>5</comment_count>
      <attachid>425282</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-06 08:31:47 -0700</bug_when>
    <thetext>Created attachment 425282
Patch (test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747442</commentid>
    <comment_count>6</comment_count>
      <attachid>425283</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-06 08:32:52 -0700</bug_when>
    <thetext>Created attachment 425283
Patch (tentative)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747583</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-06 12:52:52 -0700</bug_when>
    <thetext>Hm... I think these test failures are real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747812</commentid>
    <comment_count>8</comment_count>
      <attachid>425366</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-07 01:34:31 -0700</bug_when>
    <thetext>Created attachment 425366
Patch (tentative)

(In reply to Ryosuke Niwa from comment #7)
&gt; Hm... I think these test failures are real.

Yeah... let&apos;s try a less heavy change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747813</commentid>
    <comment_count>9</comment_count>
      <attachid>425367</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-07 01:35:05 -0700</bug_when>
    <thetext>Created attachment 425367
Patch (tentative)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748208</commentid>
    <comment_count>10</comment_count>
      <attachid>425283</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-07 22:19:48 -0700</bug_when>
    <thetext>Comment on attachment 425283
Patch (tentative)

View in context: https://bugs.webkit.org/attachment.cgi?id=425283&amp;action=review

&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:945
&gt;      removePreviouslySelectedEmptyTableRows();

Can we fix this function so that the ending selection doesn&apos;t get orphaned in the first place?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748275</commentid>
    <comment_count>11</comment_count>
      <attachid>425283</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-08 05:22:26 -0700</bug_when>
    <thetext>Comment on attachment 425283
Patch (tentative)

View in context: https://bugs.webkit.org/attachment.cgi?id=425283&amp;action=review

&gt;&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:945
&gt;&gt;      removePreviouslySelectedEmptyTableRows();
&gt; 
&gt; Can we fix this function so that the ending selection doesn&apos;t get orphaned in the first place?

I was thinking about that too, but it looks it can have the same impact as the original patch or will require more care about checking exactly when it becomes orphan. Will give a try later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748403</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-08 11:56:07 -0700</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #11)
&gt; Comment on attachment 425283 [details]
&gt; Patch (tentative)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425283&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:945
&gt; &gt;&gt;      removePreviouslySelectedEmptyTableRows();
&gt; &gt; 
&gt; &gt; Can we fix this function so that the ending selection doesn&apos;t get orphaned in the first place?
&gt; 
&gt; I was thinking about that too, but it looks it can have the same impact as
&gt; the original patch or will require more care about checking exactly when it
&gt; becomes orphan. Will give a try later.

Are you sure about that? I think the issue was the original patch was that we were exiting early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748416</commentid>
    <comment_count>13</comment_count>
      <attachid>425283</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-08 12:13:52 -0700</bug_when>
    <thetext>Comment on attachment 425283
Patch (tentative)

View in context: https://bugs.webkit.org/attachment.cgi?id=425283&amp;action=review

&gt;&gt;&gt;&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:945
&gt;&gt;&gt;&gt;      removePreviouslySelectedEmptyTableRows();
&gt;&gt;&gt; 
&gt;&gt;&gt; Can we fix this function so that the ending selection doesn&apos;t get orphaned in the first place?
&gt;&gt; 
&gt;&gt; I was thinking about that too, but it looks it can have the same impact as the original patch or will require more care about checking exactly when it becomes orphan. Will give a try later.
&gt; 
&gt; Are you sure about that? I think the issue was the original patch was that we were exiting early.

The original patch (which is the one we are commenting on) was just clearing the selection and not exiting, see below. So just moving the code into removePreviouslySelectedEmptyTableRows() won&apos;t help but I can probably try to do something better about when/how we adjust the selection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748417</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-08 12:17:28 -0700</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #13)
&gt; Comment on attachment 425283 [details]
&gt; Patch (tentative)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425283&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:945
&gt; &gt;&gt;&gt;&gt;      removePreviouslySelectedEmptyTableRows();
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Can we fix this function so that the ending selection doesn&apos;t get orphaned in the first place?
&gt; &gt;&gt; 
&gt; &gt;&gt; I was thinking about that too, but it looks it can have the same impact as the original patch or will require more care about checking exactly when it becomes orphan. Will give a try later.
&gt; &gt; 
&gt; &gt; Are you sure about that? I think the issue was the original patch was that we were exiting early.
&gt; 
&gt; The original patch (which is the one we are commenting on) was just clearing
&gt; the selection and not exiting, see below. So just moving the code into
&gt; removePreviouslySelectedEmptyTableRows() won&apos;t help but I can probably try
&gt; to do something better about when/how we adjust the selection.

I think the issue is that we&apos;re getting ending selection orphaned in the first place. That shouldn&apos;t be happening. We should be adjusting ending selection to stay in the document as we make more DOM mutations. There is a bunch of code to do that. We need to figure out how &amp; why ending selection end up being orphaned here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748422</commentid>
    <comment_count>15</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-08 12:24:27 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #14)
&gt; I think the issue is that we&apos;re getting ending selection orphaned in the
&gt; first place. That shouldn&apos;t be happening. We should be adjusting ending
&gt; selection to stay in the document as we make more DOM mutations. There is a
&gt; bunch of code to do that. We need to figure out how &amp; why ending selection
&gt; end up being orphaned here.

I think I explained this in comment 4, basically &quot;The endingSelection&apos;s start is set to that TR by mergeParagraphs() and then detached from the tree by removePreviouslySelectedEmptyTableRows()&quot;. So maybe we can add something in removePreviouslySelectedEmptyTableRows() to check that when we are removing the TR we adjust the selection accordingly e.g. by selecting the whole table or something else. The thing is that my original patch was just clearing the whole selection as long as it is orphan after that function call, which I agree is probably a bit too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748547</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-08 16:41:55 -0700</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #15)
&gt; (In reply to Ryosuke Niwa from comment #14)
&gt; &gt; I think the issue is that we&apos;re getting ending selection orphaned in the
&gt; &gt; first place. That shouldn&apos;t be happening. We should be adjusting ending
&gt; &gt; selection to stay in the document as we make more DOM mutations. There is a
&gt; &gt; bunch of code to do that. We need to figure out how &amp; why ending selection
&gt; &gt; end up being orphaned here.
&gt; 
&gt; I think I explained this in comment 4, basically &quot;The endingSelection&apos;s
&gt; start is set to that TR by mergeParagraphs() and then detached from the tree
&gt; by removePreviouslySelectedEmptyTableRows()&quot;. So maybe we can add something
&gt; in removePreviouslySelectedEmptyTableRows() to check that when we are
&gt; removing the TR we adjust the selection accordingly e.g. by selecting the
&gt; whole table or something else.

Sorry, I missed that. Yeah, that sounds like a good approach to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749041</commentid>
    <comment_count>17</comment_count>
      <attachid>425367</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-10 17:12:19 -0700</bug_when>
    <thetext>Comment on attachment 425367
Patch (tentative)

Based on the above this discussion, I&apos;d say r- on this particular patch.

Also this patch is missing the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755675</commentid>
    <comment_count>18</comment_count>
      <attachid>427417</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-04-30 07:23:27 -0700</bug_when>
    <thetext>Created attachment 427417
Alternative WIP patch

Some relevant changes for this issue are:

https://trac.webkit.org/changeset/28670/webkit
https://trac.webkit.org/changeset/272779/webkit

Attached is an alternative patch doing the same as in bug 213514.

I put this as WIP, mostly because we should probably do similar replacement for the remaining CompositeEditCommand::removeNode() call in DeleteSelectionCommand::removePreviouslySelectedEmptyTableRows() too, and maybe updates all the comments of this method, add the changelog &amp; tests, etc

One thing I wonder is this:

                // Use a raw removeNode, instead of DeleteSelectionCommand&apos;s, because
                // that won&apos;t remove rows, it only empties them in preparation for this function.

I believe this means we actually don&apos;t want to call DeleteSelectionCommand::removeNode but it&apos;s still safe to call DeleteSelectionCommand::removeNodeUpdatingStates, which calls CompositeEditCommand::removeNode directly?

I also wonder whether we should update this comment now that we actually adjust the selection:

                // FIXME: We probably shouldn&apos;t remove m_endTableRow unless it&apos;s fully selected, even if it is empty.
                // We&apos;ll need to start adjusting the selection endpoints during deletion to know whether or not m_endTableRow
                // was fully selected here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756401</commentid>
    <comment_count>19</comment_count>
      <attachid>427417</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-03 18:22:32 -0700</bug_when>
    <thetext>Comment on attachment 427417
Alternative WIP patch

View in context: https://bugs.webkit.org/attachment.cgi?id=427417&amp;action=review

&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:856
&gt; -                CompositeEditCommand::removeNode(*row);
&gt; +                removeNodeUpdatingStates(*row, DoNotAssumeContentIsAlwaysEditable);

Ok, this makes more sense to me.
There is anther call to CompositeEditCommand::removeNode below.
We should probably call removeNodeUpdatingStates there instead as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756458</commentid>
    <comment_count>20</comment_count>
      <attachid>427417</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-05-04 00:25:47 -0700</bug_when>
    <thetext>Comment on attachment 427417
Alternative WIP patch

View in context: https://bugs.webkit.org/attachment.cgi?id=427417&amp;action=review

&gt;&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:856
&gt;&gt; +                removeNodeUpdatingStates(*row, DoNotAssumeContentIsAlwaysEditable);
&gt; 
&gt; Ok, this makes more sense to me.
&gt; There is anther call to CompositeEditCommand::removeNode below.
&gt; We should probably call removeNodeUpdatingStates there instead as well.

Yes, please see my comments/questions at https://bugs.webkit.org/show_bug.cgi?id=223753#c18</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756473</commentid>
    <comment_count>21</comment_count>
      <attachid>427644</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-05-04 01:39:43 -0700</bug_when>
    <thetext>Created attachment 427644
Patch

OK, I updated the comment about raw call to removeNode. About the TODO from https://trac.webkit.org/changeset/28670/webkit, I&apos;m still not sure what is meant here, so I&apos;ll keep it as it.

I&apos;m integrating the test too, since this is similar to https://trac.webkit.org/changeset/272779/webkit which landed with a test and was removed from security component.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757807</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-07 01:08:50 -0700</bug_when>
    <thetext>Committed r277163 (237449@main): &lt;https://commits.webkit.org/237449@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427644.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>424262</attachid>
            <date>2021-03-25 11:15:23 -0700</date>
            <delta_ts>2021-03-25 11:15:23 -0700</delta_ts>
            <desc>Minimal test case</desc>
            <filename>positionInsideTextNode.html</filename>
            <type>text/html</type>
            <size>4355</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">PHN0eWxlPgo6bm90KGJhc2UpIHsgb2JqZWN0LXBvc2l0aW9uOiAzMHB4IDU1JTsgLS1jc3N2YXJj
OiBkb21pbmFudC1iYXNlbGluZTogbm8tY2hhbmdlOyBtc28taWdub3JlOiBwYWRkaW5nOyBjb2x1
bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7IG1hc2stc291cmNlLXR5cGU6IGx1bWluYW5jZTsgLXdl
YmtpdC10ZXh0LXN0cm9rZTogOHB4ICMyNjY7IGN1cnNvcjogY3Jvc3NoYWlyOyBmb250LXdlaWd0
aDogMHB4OyBkaXBzbGF5OiBub25lOyBmbGV4LWZsb3c6IGluaXRpYWw7IC13ZWJraXQtYW5pbWF0
aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgc2hhcGUtb3V0c2lkZTogcG9seWdvbigxIDMsIDkgMnB4
LCAwcHggMTApOyBzY2FsZTogODggMzsgbW90aW9uLXBhdGg6IG5vbmU7IGp1c3RpZnktc2VsZjog
ZW5kIHVuc2FmZTsgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7IGJvcmRlci1pbWFnZS1vdXRzZXQ6
IGluaGVyaXQ7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAxczsgLXdlYmtpdC1tYXJnaW4tc3Rh
cnQ6IDFweDsgYm9yZGVyLWJvdHRvbTogMHB4IHNvbGlkIH0NCjwvc3R5bGU+PHNjcmlwdD4KZnVu
Y3Rpb24gR2V0VmFyaWFibGUoZnV6emVydmFycywgdmFyX3R5cGUpIHsgaWYoZnV6emVydmFyc1t2
YXJfdHlwZV0pIHsgcmV0dXJuIGZ1enplcnZhcnNbdmFyX3R5cGVdOyB9IGVsc2UgeyByZXR1cm4g
bnVsbDsgfX0KZnVuY3Rpb24gU2V0VmFyaWFibGUoZnV6emVydmFycywgdmFyX25hbWUsIHZhcl90
eXBlKSB7IGZ1enplcnZhcnNbdmFyX3R5cGVdID0gdmFyX25hbWU7IH0KZnVuY3Rpb24gZXZlbnRo
YW5kbGVyMSgpIHsKIC8qIG5ld3Zhcnt2YXIwMDAyNDpldmVudGhhbmRsZXJ9ICovIHZhciB2YXIw
MDAyNCA9IGV2ZW50aGFuZGxlcjQ7IAogLyogbmV3dmFye3ZhcjAwMDIzOkV2ZW50TGlzdGVuZXJ9
ICovIHZhciB2YXIwMDAyMyA9IHZhcjAwMDI0OyAKIGh0bWx2YXIwMDAyMi5oZWlnaHQgPSAiMCI7
IAogaHRtbHZhcjAwMDA1LmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIHZh
cjAwMDIzKTsgCiBodG1sdmFyMDAwMDUuc2V0QXR0cmlidXRlKCJhcmlhLWF1dG9jb21wbGV0ZSIs
ICJsaXN0Iik7IAogLyogbmV3dmFye3ZhcjAwMTM2OkV2ZW50SGFuZGxlcn0gKi8gdmFyIHZhcjAw
MTM2ID0gd2luZG93Lm9ud2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uOyAKIHdpbmRvdy5vbndoZWVs
ID0gdmFyMDAxMzY7IAp9CmZ1bmN0aW9uIGV2ZW50aGFuZGxlcjMoKSB7CnZhciBmdXp6ZXJ2YXJz
ID0ge307ClNldFZhcmlhYmxlKGZ1enplcnZhcnMsIGRvY3VtZW50LCAnRG9jdW1lbnQnKTsKIC8q
IG5ld3Zhcnt2YXIwMDAxMjpXaW5kb3d9ICovIHZhciB2YXIwMDAxMiA9IHdpbmRvd1s1MiV3aW5k
b3cubGVuZ3RoXTsgCiB2YXIwMDAyNiA9IEdldFZhcmlhYmxlKGZ1enplcnZhcnMsICdEb2N1bWVu
dCcpOyAgCiAvKiBuZXd2YXJ7dmFyMDAwODI6RXZlbnRIYW5kbGVyfSAqLyB2YXIgdmFyMDAwODIg
PSB2YXIwMDAyNi5vbmJlZm9yZXBhc3RlOyAKIFNldFZhcmlhYmxlKGZ1enplcnZhcnMsIHZhcjAw
MDgyLCAnRXZlbnRIYW5kbGVyJyk7ICAgCiAvKiBuZXd2YXJ7dmFyMDAxMTU6RWxlbWVudH0gKi8g
dmFyIHZhcjAwMTE1ID0gdmFyMDAwMjYuYm9keTsgCiB2YXIwMDExNS5jb250ZW50RWRpdGFibGUg
PSAidHJ1ZSI7IAogdmFyMDAxMzUgPSBHZXRWYXJpYWJsZShmdXp6ZXJ2YXJzLCAnRXZlbnRIYW5k
bGVyJyk7ICAKIC8qIG5ld3Zhcnt2YXIwMDEzNjpXaW5kb3d9ICovIHZhciB2YXIwMDEzNiA9IHZh
cjAwMDEyLndpbmRvdzsgCiB2YXIwMDEzNi5vbnBhZ2VoaWRlID0gdmFyMDAxMzU7IAogLyogbmV3
dmFye3ZhcjAwMTQ3OkhUTUxUYWJsZUVsZW1lbnR9ICovIHZhciB2YXIwMDE0NyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7IAogLyogbmV3dmFye3ZhcjAwMTQ2OkhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50fSAqLyB2YXIgdmFyMDAxNDYgPSB2YXIwMDE0Ny5jcmVhdGVUQm9keSgpOyAK
IC8qIG5ld3Zhcnt2YXIwMDI1NjpEb2N1bWVudH0gKi8gdmFyIHZhcjAwMjU2ID0gdmFyMDAxNDYu
b3duZXJEb2N1bWVudDsgCiAvKiBuZXd2YXJ7dmFyMDAyNjg6Ym9vbGVhbn0gKi8gdmFyIHZhcjAw
MjY4ID0gdmFyMDAwMjYuZXhlY0NvbW1hbmQoInNlbGVjdEFsbCIpOyAKIC8qIG5ld3Zhcnt2YXIw
MDI3NDpib29sZWFufSAqLyB2YXIgdmFyMDAyNzQgPSB2YXIwMDI1Ni5leGVjQ29tbWFuZCgiaW5z
ZXJ0VGV4dCIsIFN0cmluZy5mcm9tQ2hhckNvZGUoKSk7IAp9CmZ1bmN0aW9uIGV2ZW50aGFuZGxl
cjQoKSB7CnZhciBmdXp6ZXJ2YXJzID0ge307ClNldFZhcmlhYmxlKGZ1enplcnZhcnMsIHdpbmRv
dywgJ1dpbmRvdycpOwogLyogbmV3dmFye3ZhcjAwMDA4OmV2ZW50aGFuZGxlcn0gKi8gdmFyIHZh
cjAwMDA4ID0gZXZlbnRoYW5kbGVyMzsgCiAvKiBuZXd2YXJ7dmFyMDAwMTQ6U1ZHRWxlbWVudH0g
Ki8gdmFyIHZhcjAwMDE0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJhbHRHbHlwaCIpOyAKIC8qIG5ld3Zhcnt2YXIwMDAxMzpEb2N1bWVu
dH0gKi8gdmFyIHZhcjAwMDEzID0gdmFyMDAwMTQub3duZXJEb2N1bWVudDsgCiAvKiBuZXd2YXJ7
dmFyMDAwMTI6V2luZG93fSAqLyB2YXIgdmFyMDAwMTIgPSB2YXIwMDAxMy5kZWZhdWx0Vmlldzsg
CiAvKiBuZXd2YXJ7dmFyMDAwMjg6RG9jdW1lbnR9ICovIHZhciB2YXIwMDAyOCA9IGh0bWx2YXIw
MDAyMi5jb250ZW50RG9jdW1lbnQ7IAogLyogbmV3dmFye3ZhcjAwMDI3OkhUTUxCb2R5RWxlbWVu
dH0gKi8gdmFyIHZhcjAwMDI3ID0gdmFyMDAwMjguY3JlYXRlRWxlbWVudCgiYm9keSIpOyAKIC8q
IG5ld3Zhcnt2YXIwMDAzNjpGcmFtZVJlcXVlc3RDYWxsYmFja30gKi8gdmFyIHZhcjAwMDM2ID0g
dmFyMDAwMDg7IAogLyogbmV3dmFye3ZhcjAwMDM1Omxvbmd9ICovIHZhciB2YXIwMDAzNSA9IHZh
cjAwMDEyLnJlcXVlc3RBbmltYXRpb25GcmFtZSh2YXIwMDAzNik7IAogdmFyMDAwNDIgPSBHZXRW
YXJpYWJsZShmdXp6ZXJ2YXJzLCAnV2luZG93Jyk7ICAKIC8qIG5ld3Zhcnt2YXIwMDA1MjpFdmVu
dEhhbmRsZXJ9ICovIHZhciB2YXIwMDA1MiA9IGh0bWx2YXIwMDAyOC5vbndlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2U7IAogU2V0VmFyaWFibGUoZnV6emVydmFycywgdmFyMDAwNTIsICdFdmVudEhhbmRs
ZXInKTsgICAKIHZhcjAwMDg2ID0gR2V0VmFyaWFibGUoZnV6emVydmFycywgJ0V2ZW50SGFuZGxl
cicpOyAgCiB2YXIwMDA0Mi5vbndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbiA9IHZhcjAwMDg2OyAK
IHZhcjAwMTU0ID0gR2V0VmFyaWFibGUoZnV6emVydmFycywgJ0V2ZW50SGFuZGxlcicpOyAgCiB2
YXIwMDAyNy5vbnJlc2l6ZSA9IHZhcjAwMTU0OyAKfQpmdW5jdGlvbiBldmVudGhhbmRsZXI1KCkg
ewp2YXIgZnV6emVydmFycyA9IHt9OwpTZXRWYXJpYWJsZShmdXp6ZXJ2YXJzLCBkb2N1bWVudCwg
J0RvY3VtZW50Jyk7CiAvKiBuZXd2YXJ7dmFyMDAxMzU6RXZlbnRIYW5kbGVyfSAqLyB2YXIgdmFy
MDAxMzUgPSB3aW5kb3cub253aGVlbDsgCiBTZXRWYXJpYWJsZShmdXp6ZXJ2YXJzLCB2YXIwMDEz
NSwgJ0V2ZW50SGFuZGxlcicpOyAgIAogdmFyMDAxNjQgPSBHZXRWYXJpYWJsZShmdXp6ZXJ2YXJz
LCAnRG9jdW1lbnQnKTsgIAogdmFyMDAxOTEgPSBHZXRWYXJpYWJsZShmdXp6ZXJ2YXJzLCAnRXZl
bnRIYW5kbGVyJyk7ICAKIC8qIG5ld3Zhcnt2YXIwMDIyNDpib29sZWFufSAqLyB2YXIgdmFyMDAy
MjQgPSB2YXIwMDE2NC5leGVjQ29tbWFuZCgiaW5kZW50Iik7IAogdmFyMDAyMjkgPSBHZXRWYXJp
YWJsZShmdXp6ZXJ2YXJzLCAnRG9jdW1lbnQnKTsgIAogdmFyMDAyMjkub25iZWZvcmVwYXN0ZSA9
IHZhcjAwMTkxOyAKfQo8L3NjcmlwdD4KPHAgaWQ9Imh0bWx2YXIwMDAwMSI+DQo8ZGV0YWlscyB0
b3BtYXJnaW49IjIiPg0KPGJhc2UgaWQ9Imh0bWx2YXIwMDAwNSIgdGFyZ2V0PSJodG1sdmFyMDAw
MDEiPg0KPC9kZXRhaWxzPg0KPHRhYmxlIGlucHV0bW9kZT0ia2FuYSI+DQo8dmlkZW8gaWQ9b25j
YW5wbGF5dGhyb3VnaD0iZXZlbnRoYW5kbGVyNCgpIiBzcmM9IngiIG9ubG9hZHN0YXJ0PSJldmVu
dGhhbmRsZXIxKCkiIGRhdGE9IigxNTklIiJldmVudGhhbmRsZXIyKCkiPg0KPHRyIG9ud2Via2l0
ZnVsbHNjcmVlbmNoYW5nZT0iZXZlbnRoYW5kbGVyNSgpIj4NCjxpZnJhbWUgaWQ9Imh0bWx2YXIw
MDAyMiIgbG9uZ2Rlc2M9PSJ0cnVlIj5lLnE7cV1KbXROJCxsPC9pZnJhbWU+DQo8c2VsZWN0IGlk
PSJodG1sdmFyMDAwMjgiPSJmYWxzZSIgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlPSJldmVudGhh
bmRsZXI1KCkiIG9wdGltdW09IjEiPg0=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>425272</attachid>
            <date>2021-04-06 06:31:45 -0700</date>
            <delta_ts>2021-04-06 06:31:45 -0700</delta_ts>
            <desc>Reduced testcase</desc>
            <filename>bug223753.html</filename>
            <type>text/html</type>
            <size>486</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">PHN0eWxlPgogIDplbXB0eSB7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGNoZWNrYm94OwogIH0K
PC9zdHlsZT4KPHNjcmlwdD4KICBvbmxvYWQgPSAoKSA9PiB7CiAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpKTsKICAgIGxldCBuMCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKG4wKTsKICAgIG4wLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
KTsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dHInKSk7CiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJyk7CiAgICBkb2N1bWVu
dC5kZXNpZ25Nb2RlID0gJ29uJzsKICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRUZXh0
JywgZmFsc2UsICcnKTsKICB9Owo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425282</attachid>
            <date>2021-04-06 08:31:47 -0700</date>
            <delta_ts>2021-05-04 01:39:43 -0700</delta_ts>
            <desc>Patch (test)</desc>
            <filename>0001-Bug-223753-Crash-in-InsertTextCommand-positionInside.patch</filename>
            <type>text/plain</type>
            <size>2669</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA4MWYwNTAzYTBmZTY0ZjViNDQ5ZmI5MTQ1M2ViNDA1M2Y5ODg1Yzg3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RnI9QzM9QTlkPUMzPUE5cmljPTIwV2FuZz89
IDxmd2FuZ0BpZ2FsaWEuY29tPgpEYXRlOiBUdWUsIDYgQXByIDIwMjEgMTc6MTY6NTUgKzAyMDAK
U3ViamVjdDogW1BBVENIIDEvMl0gQnVnIDIyMzc1MyAtIENyYXNoIGluCiBJbnNlcnRUZXh0Q29t
bWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZSAodGVzdHMpCgotLS0KIExheW91dFRlc3RzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKysrKysrCiAuLi4vc2Vs
ZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy1leHBlY3RlZC50eHQgfCAgMiArKwogLi4uL3NlbGVj
dGlvbi1vbi1lbXB0eS10YWJsZS1yb3cuaHRtbCAgICAgICAgIHwgMjAgKysrKysrKysrKysrKysr
KysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9zZWxlY3Rpb24tb24tZW1wdHktdGFibGUt
cm93LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcv
ZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy5odG1sCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQzYjUy
YWJkMTkuLmI2MzY5ZmM2MWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNC0wNiAgRnLD
qWTDqXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBDcmFzaCBpbiBJbnNl
cnRUZXh0Q29tbWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzUzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHJlZ3Jlc3Npb24gdGVzdC4KKworICAg
ICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9u
LWVtcHR5LXRhYmxlLXJvdy5odG1sOiBBZGRlZC4KKwogMjAyMS0wMy0zMCAgUm9iZXJ0IEplbm5l
ciAgPGplbm5lckBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIGFuZCBpT1Mgd2syIF0g
d2VicnRjL2xpYndlYnJ0Yy9kZXNjcmlwdGlvbkdldHRlcnMuaHRtbCBpcyBmbGFreSBmYWlsaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9zZWxlY3Rpb24tb24t
ZW1wdHktdGFibGUtcm93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDU3YzFkODZmNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJv
dy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitDT05TT0xFIE1FU1NBR0U6IFRoaXMgdGVz
dCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9zZWxlY3Rpb24tb24tZW1wdHktdGFibGUtcm93Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDE1NTk2NTU5YwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9u
LWVtcHR5LXRhYmxlLXJvdy5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzxzdHlsZT4KKyAgOmVtcHR5
IHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGNoZWNrYm94OworICB9Cis8L3N0eWxlPgorPHNj
cmlwdD4KKyAgb25sb2FkID0gKCkgPT4geworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIGNvbnNvbGUubG9nKCdUaGlzIHRlc3Qg
cGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLicpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJykpOworICAgIGxldCBuMCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChuMCk7CisgICAgbjAuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dHInKSk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpOworICAgIGRvY3Vt
ZW50LmRlc2lnbk1vZGUgPSAnb24nOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbnNlcnRU
ZXh0JywgZmFsc2UsICcnKTsKKyAgfTsKKzwvc2NyaXB0PgotLSAKMi4yNS4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425283</attachid>
            <date>2021-04-06 08:32:52 -0700</date>
            <delta_ts>2021-04-07 01:34:31 -0700</delta_ts>
            <desc>Patch (tentative)</desc>
            <filename>0002-Bug-223753-Crash-in-InsertTextCommand-positionInside.patch</filename>
            <type>text/plain</type>
            <size>2429</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSBiNzdhNzRlZDBjYTQ3MjQxYmJhYzA0Y2I1Y2ZiMGM1NGE0Y2IxMDEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RnI9QzM9QTlkPUMzPUE5cmljPTIwV2FuZz89
IDxmd2FuZ0BpZ2FsaWEuY29tPgpEYXRlOiBUdWUsIDYgQXByIDIwMjEgMTc6MzA6MjcgKzAyMDAK
U3ViamVjdDogW1BBVENIIDIvMl0gQnVnIDIyMzc1MyAtIENyYXNoIGluCiBJbnNlcnRUZXh0Q29t
bWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZQoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCiAuLi4vZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCAgICAgICAgfCAgNyArKysrKystCiAyIGZp
bGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYWZmNGYxNzU2YS4uOTI0N2M2NWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDIxLTA0LTA2ICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgorCisgICAgICAg
IENyYXNoIGluIEluc2VydFRleHRDb21tYW5kOjpwb3NpdGlvbkluc2lkZVRleHROb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3NTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHJlbW92ZVBy
ZXZpb3VzbHlTZWxlY3RlZEVtcHR5VGFibGVSb3dzKCkgaXMgY2FsbGVkLCBpdCdzIHBvc3NpYmxl
IHRoYXQgdGhlCisgICAgICAgIGVuZGluZ1NlbGVjdGlvbidzIHN0YXJ0IHBvc2l0aW9uIGJlY29t
ZXMgb3JwaGFuLiBUaGlzIGxlYWRzIHRvIGEgbnVsbCBzdGFydFBvc2l0aW9uIGluCisgICAgICAg
IEluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5LCBjYXVzaW5nIGEgZGVidWcgYXNzZXJ0IHdoZW4g
cG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUgaXMgY2FsbGVkCisgICAgICAgIGFuZCBhIHJlbGVh
c2UgbnVsbHB0ciBkZXJlZmVyZW5jZSBsYXRlciBpbiB0aGUgZnVuY3Rpb24uIFRoaXMgcGF0Y2gg
Zml4ZXMgdGhhdCBpc3N1ZSBieQorICAgICAgICByZXNldHRpbmcgdGhlIGVuZGluZyBzZWxlY3Rp
b24gYWZ0ZXIgdGhlIHJlbW92ZVByZXZpb3VzbHlTZWxlY3RlZEVtcHR5VGFibGVSb3dzKCkgY2Fs
bCwgaW4KKyAgICAgICAgY2FzZSBpdCBiZWNhbWUgb3JwaGFuLgorCisgICAgICAgIFRlc3Q6IGVk
aXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy5odG1sCisKKyAgICAg
ICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6IENsZWFyIGVuZGluZyBzZWxlY3Rp
b24gaWYgaXQgYmVjYW1lIG9ycGhhbi4KKwogMjAyMS0wMy0zMCAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBPY2Nhc2lvbmFsIGRlYnVnIGFzc2VydCBpbiBHZW5l
cmljVGFza1F1ZXVlOjp+R2VuZXJpY1Rhc2tRdWV1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggZDIzMTBjZDI4YS4uMzFmMzhl
M2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25D
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCkBAIC05NDMsNyArOTQzLDEyIEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgbWVyZ2VQYXJhZ3JhcGhzKCk7CiAgICAgCiAgICAgcmVtb3ZlUHJl
dmlvdXNseVNlbGVjdGVkRW1wdHlUYWJsZVJvd3MoKTsKLSAgICAKKyAgICBpZiAoZW5kaW5nU2Vs
ZWN0aW9uKCkuaXNPcnBoYW4oKSkgeworICAgICAgICBtX2VuZGluZ1Bvc2l0aW9uLmNsZWFyKCk7
CisgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1fZW5kaW5nUG9z
aXRpb24sIGFmZmluaXR5LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlvbmFsKCkpKTsKKyAg
ICAgICAgY2xlYXJUcmFuc2llbnRTdGF0ZSgpOworICAgIH0KKwogICAgIGlmIChtX25lZWRQbGFj
ZWhvbGRlcikgewogICAgICAgICBpZiAobV9zYW5pdGl6ZU1hcmt1cCkKICAgICAgICAgICAgIHJl
bW92ZVJlZHVuZGFudEJsb2NrcygpOwotLSAKMi4yNS4xCgo=
</data>
<flag name="commit-queue"
          id="445190"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425366</attachid>
            <date>2021-04-07 01:34:31 -0700</date>
            <delta_ts>2021-04-07 01:35:05 -0700</delta_ts>
            <desc>Patch (tentative)</desc>
            <filename>0001-Bug-223753-Crash-in-InsertTextCommand-positionInside.patch</filename>
            <type>text/plain</type>
            <size>2649</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA4OGFiNTMyNjRmMzkzNzM5NGZhOTlmNmY1ZTRhNmUyZmRhYWNiMzc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RnI9QzM9QTlkPUMzPUE5cmljPTIwV2FuZz89
IDxmd2FuZ0BpZ2FsaWEuY29tPgpEYXRlOiBUdWUsIDYgQXByIDIwMjEgMTc6MTY6NTUgKzAyMDAK
U3ViamVjdDogW1BBVENIIDEvMl0gQnVnIDIyMzc1MyAtIENyYXNoIGluCiBJbnNlcnRUZXh0Q29t
bWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZSAodGVzdHMpCgotLS0KIExheW91dFRlc3RzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKysrKysrCiAuLi4vc2Vs
ZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy1leHBlY3RlZC50eHQgfCAgMiArKwogLi4uL3NlbGVj
dGlvbi1vbi1lbXB0eS10YWJsZS1yb3cuaHRtbCAgICAgICAgIHwgMjAgKysrKysrKysrKysrKysr
KysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9zZWxlY3Rpb24tb24tZW1wdHktdGFibGUt
cm93LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcv
ZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy5odG1sCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI1MjRj
ZmY1OTQuLmJjZTI1ZDVjYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNC0wNiAgRnLD
qWTDqXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBDcmFzaCBpbiBJbnNl
cnRUZXh0Q29tbWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzUzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHJlZ3Jlc3Npb24gdGVzdC4KKworICAg
ICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9u
LWVtcHR5LXRhYmxlLXJvdy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNC0wNiAgQWRpdHlhIEtlZXJ0
aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNSXSBVc2Ugb3BhcXVl
IHN5c3RlbSBjb2xvcnMgZm9yIGNvbnRyb2wgYmFja2dyb3VuZHMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL3NlbGVjdGlvbi1vbi1lbXB0
eS10YWJsZS1yb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAuLjQ1N2MxZDg2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2RlbGV0aW5nL3NlbGVjdGlvbi1vbi1lbXB0eS10YWJsZS1yb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMiBAQAorQ09OU09MRSBNRVNTQUdFOiBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMg
bm90IGNyYXNoLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL3Nl
bGVjdGlvbi1vbi1lbXB0eS10YWJsZS1yb3cuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVs
ZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAxNTU5NjU1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL3NlbGVjdGlvbi1vbi1lbXB0eS10YWJsZS1yb3cuaHRt
bApAQCAtMCwwICsxLDIwIEBACis8c3R5bGU+CisgIDplbXB0eSB7CisgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiBjaGVja2JveDsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgIG9ubG9hZCA9ICgp
ID0+IHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICBjb25zb2xlLmxvZygnVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5v
dCBjcmFzaC4nKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2lmcmFtZScpKTsKKyAgICBsZXQgbjAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd0cicpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobjApOworICAgIG4wLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJykpOworICAgIGRvY3VtZW50
LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKTsKKyAgICBkb2N1bWVudC5kZXNpZ25Nb2RlID0gJ29u
JzsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnJyk7Cisg
IH07Cis8L3NjcmlwdD4KLS0gCjIuMjUuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425367</attachid>
            <date>2021-04-07 01:35:05 -0700</date>
            <delta_ts>2021-05-04 01:39:43 -0700</delta_ts>
            <desc>Patch (tentative)</desc>
            <filename>0002-Bug-223753-Crash-in-InsertTextCommand-positionInside.patch</filename>
            <type>text/plain</type>
            <size>2560</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSBhMTlmNzg2MTUxMDBhOTEyNjI4OTE4YTViM2M0MDUxNWNjOWJiZGRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RnI9QzM9QTlkPUMzPUE5cmljPTIwV2FuZz89
IDxmd2FuZ0BpZ2FsaWEuY29tPgpEYXRlOiBUdWUsIDYgQXByIDIwMjEgMTc6MzA6MjcgKzAyMDAK
U3ViamVjdDogW1BBVENIIDIvMl0gQnVnIDIyMzc1MyAtIENyYXNoIGluCiBJbnNlcnRUZXh0Q29t
bWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZQoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwIHwgIDIgKy0KIDIgZmlsZXMgY2hh
bmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjkx
ZjQ5ZWNhLi41MDMwMTQ3OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDQt
MDYgIEZyw6lkw6lyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ3Jhc2gg
aW4gSW5zZXJ0VGV4dENvbW1hbmQ6OnBvc2l0aW9uSW5zaWRlVGV4dE5vZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gcmVtb3ZlUHJldmlvdXNs
eVNlbGVjdGVkRW1wdHlUYWJsZVJvd3MoKSBpcyBjYWxsZWQsIGl0J3MgcG9zc2libGUgdGhhdCB0
aGUKKyAgICAgICAgZW5kaW5nU2VsZWN0aW9uJ3Mgc3RhcnQgcG9zaXRpb24gYmVjb21lcyBvcnBo
YW4uIFRoaXMgbGVhZHMgdG8gYSBudWxsIHN0YXJ0UG9zaXRpb24gaW4KKyAgICAgICAgSW5zZXJ0
VGV4dENvbW1hbmQ6OmRvQXBwbHksIGNhdXNpbmcgYSBkZWJ1ZyBhc3NlcnQgd2hlbiBwb3NpdGlv
bkluUGFyZW50QmVmb3JlTm9kZSBpcyBjYWxsZWQKKyAgICAgICAgYW5kIGEgcmVsZWFzZSBudWxs
cHRyIGRlcmVmZXJlbmNlIGxhdGVyIGluIHRoZSBmdW5jdGlvbi4gVGhpcyBwYXRjaCBmaXhlcyB0
aGF0IGlzc3VlIGV4aXRpbmcKKyAgICAgICAgSW5zZXJ0VGV4dENvbW1hbmQ6OmRvQXBwbHkgZWFy
bHkgaWYgdGhlIGVuZGluZ1NlbGVjdGlvbigpIGJlY29tZXMgb3JwaGFuIGFmdGVyIHRoZSBkZWxl
dGlvbgorICAgICAgICBjb21tYW5kLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZGVsZXRpbmcv
c2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0lu
c2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5k
Ojpkb0FwcGx5KTogRXhpdCBlYXJseSBpZiB0aGUgZW5kaW5nIHNlbGVjdGlvbiBpcyBvcnBoYW4g
dG9vLgorCiAyMDIxLTA0LTA2ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXVtGQ1JdIFVzZSBvcGFxdWUgc3lzdGVtIGNvbG9ycyBmb3IgY29udHJv
bCBiYWNrZ3JvdW5kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRU
ZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcAppbmRleCBlNmE2YzllNDNlLi4wYzI4NDdkMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSW5z
ZXJ0VGV4dENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAvLyBkZWxldGVTZWxlY3Rpb24gZXZl
bnR1YWxseSBtYWtlcyBhIG5ldyBlbmRpbmdTZWxlY3Rpb24gb3V0IG9mIGEgUG9zaXRpb24uIElm
IHRoYXQgUG9zaXRpb24gZG9lc24ndCBoYXZlCiAgICAgICAgIC8vIGEgcmVuZGVyZXIgKGUuZy4g
aXQgaXMgb24gYSA8ZnJhbWVzZXQ+IGluIHRoZSBET00pLCB0aGUgVmlzaWJsZVNlbGVjdGlvbiBj
YW5ub3QgYmUgY2Fub25pY2FsaXplZCB0byAKICAgICAgICAgLy8gYW55dGhpbmcgb3RoZXIgdGhh
biBOb1NlbGVjdGlvbi4gVGhlIHJlc3Qgb2YgdGhpcyBmdW5jdGlvbiByZXF1aXJlcyBhIHJlYWwg
ZW5kaW5nU2VsZWN0aW9uLCBzbyBiYWlsIG91dC4KLSAgICAgICAgaWYgKGVuZGluZ1NlbGVjdGlv
bigpLmlzTm9uZSgpKQorICAgICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lT3JPcnBo
YW5lZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS5l
ZGl0b3IoKS5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsKICAgICAgICAgaWYgKHBlcmZvcm1P
dmVyd3JpdGUobV90ZXh0LCBtX3NlbGVjdEluc2VydGVkVGV4dCkpCi0tIAoyLjI1LjEKCg==
</data>
<flag name="review"
          id="445305"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427417</attachid>
            <date>2021-04-30 07:23:27 -0700</date>
            <delta_ts>2021-05-04 01:39:43 -0700</delta_ts>
            <desc>Alternative WIP patch</desc>
            <filename>bug223753.patch</filename>
            <type>text/plain</type>
            <size>795</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IDFiNDc1NjcwMDIuLjZmNzE0YzE2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtODUzLDcgKzg1Myw3IEBAIHZv
aWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUHJldmlvdXNseVNlbGVjdGVkRW1wdHlU
YWJsZVJvd3MoKQogICAgICAgICAgICAgaWYgKGlzVGFibGVSb3dFbXB0eShyb3cuZ2V0KCkpKSB7
CiAgICAgICAgICAgICAgICAgLy8gVXNlIGEgcmF3IHJlbW92ZU5vZGUsIGluc3RlYWQgb2YgRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZCdzLCBiZWNhdXNlCiAgICAgICAgICAgICAgICAgLy8gdGhhdCB3
b24ndCByZW1vdmUgcm93cywgaXQgb25seSBlbXB0aWVzIHRoZW0gaW4gcHJlcGFyYXRpb24gZm9y
IHRoaXMgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJl
bW92ZU5vZGUoKnJvdyk7CisgICAgICAgICAgICAgICAgcmVtb3ZlTm9kZVVwZGF0aW5nU3RhdGVz
KCpyb3csIERvTm90QXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcm93ID0gV1RGTW92ZShwcmV2aW91c1Jvdyk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427644</attachid>
            <date>2021-05-04 01:39:43 -0700</date>
            <delta_ts>2021-05-07 01:08:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug223753.patch</filename>
            <type>text/plain</type>
            <size>5107</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZWMzNjc0MDdiLi4xMWY3NTkwZWEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDUtMDQgIEZyw6lkw6lyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CisKKyAgICAgICAg
Q3Jhc2ggaW4gSW5zZXJ0VGV4dENvbW1hbmQ6OnBvc2l0aW9uSW5zaWRlVGV4dE5vZGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCByZWdyZXNzaW9u
IHRlc3QuCisKKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL3NlbGVjdGlvbi1vbi1lbXB0eS10
YWJsZS1yb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5n
L3NlbGVjdGlvbi1vbi1lbXB0eS10YWJsZS1yb3cuaHRtbDogQWRkZWQuCisKIDIwMjEtMDUtMDMg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTiAocjI3NDQ2MSk6IFttYWNPUyB3azFdIGZhc3QvcmVwYWludC9jYW52YXMtb2JqZWN0LWZp
dC5odG1sIGlzIGZsYWtleSB0ZXh0IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL3NlbGVjdGlvbi1vbi1lbXB0eS10YWJsZS1y
b3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ1
N2MxZDg2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5n
L3NlbGVjdGlvbi1vbi1lbXB0eS10YWJsZS1yb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBA
QAorQ09OU09MRSBNRVNTQUdFOiBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNo
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL3NlbGVjdGlvbi1v
bi1lbXB0eS10YWJsZS1yb3cuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvc2Vs
ZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAuLjAxNTU5NjU1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2RlbGV0aW5nL3NlbGVjdGlvbi1vbi1lbXB0eS10YWJsZS1yb3cuaHRtbApAQCAtMCww
ICsxLDIwIEBACis8c3R5bGU+CisgIDplbXB0eSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBj
aGVja2JveDsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CisgIG9ubG9hZCA9ICgpID0+IHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICBjb25zb2xlLmxvZygnVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2VzIG5vdCBjcmFzaC4n
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lmcmFtZScpKTsKKyAgICBsZXQgbjAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobjApOworICAgIG4wLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJykpOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCdTZWxlY3RBbGwnKTsKKyAgICBkb2N1bWVudC5kZXNpZ25Nb2RlID0gJ29uJzsKKyAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgnSW5zZXJ0VGV4dCcsIGZhbHNlLCAnJyk7CisgIH07Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5ZDJjZGI0OGM3Li5jOGMxZWE4MDI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUtMDQgIEZyw6lkw6lyaWMgV2FuZyAgPGZ3YW5nQGlnYWxp
YS5jb20+CisKKyAgICAgICAgQ3Jhc2ggaW4gSW5zZXJ0VGV4dENvbW1hbmQ6OnBvc2l0aW9uSW5z
aWRlVGV4dE5vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IGVkaXRpbmcvZGVsZXRpbmcvc2VsZWN0aW9uLW9uLWVtcHR5LXRhYmxlLXJvdy5o
dG1sCisKKyAgICAgICAgVGhpcyBpcyBhIGZvbGxvdy11cCBvZiBidWcgMjEzNTE0LCB3aGVyZSBy
ZW1vdmVQcmV2aW91c2x5U2VsZWN0ZWRFbXB0eVRhYmxlUm93cyB3YXMKKyAgICAgICAgbW9kaWZp
ZWQgdG8gZW5zdXJlIHRoZSBzZWxlY3Rpb24gaXMgcHJvcGVybHkgdXBkYXRlZCBhZnRlciBkZWxl
dGluZyB0aGUgbGFzdCByb3cuIFRoaXMKKyAgICAgICAgcGF0Y2ggZG9lcyB0aGUgc2FtZSBmb3Ig
b3RoZXIgcm93cy4KKworICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVQcmV2
aW91c2x5U2VsZWN0ZWRFbXB0eVRhYmxlUm93cyk6IFVwZGF0ZSBjb21tZW50CisgICAgICAgIGFi
b3V0IGNhbGxpbmcgcmF3IHJlbW92ZU5vZGUgYW5kIG1vdmUgaXQgdG8gdGhlIHRvcCBvZiB0aGUg
ZnVuY3Rpb24uIFJlcGxhY2UgYWxsIHRoZSBjYWxscworICAgICAgICB0byBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6cmVtb3ZlTm9kZSB3aXRoIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2Rl
VXBkYXRpbmdTdGF0ZXMgc28KKyAgICAgICAgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIGFkanVzdGVk
LgorCiAyMDIxLTA1LTAzICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6ICFtX25lZWRFeGNlcHRpb25DaGVjayB3aGlsZSBjb252
ZXJ0aW5nIElETFNlcXVlbmNlPFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxl
dGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAxYjQ3NTY3MDAyLi4wMWQ0ZDIzYmViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
QEAgLTg0NiwxNSArODQ2LDE0IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQ
YXJhZ3JhcGhzKCkKIAogdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVQcmV2aW91
c2x5U2VsZWN0ZWRFbXB0eVRhYmxlUm93cygpCiB7CisgICAgLy8gRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZDo6cmVtb3ZlTm9kZSBkb2VzIG5vdCByZW1vdmUgcm93cyBidXQgb25seSBlbXB0aWVzIHRo
ZW0gaW4gcHJlcGFyYXRpb24gZm9yIHRoaXMgZnVuY3Rpb24uCisgICAgLy8gSW5zdGVhZCwgRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlTm9kZVVwZGF0aW5nU3RhdGVzIGlzIHVzZWQgYmVs
b3csIHdoaWNoIGNhbGxzIGEgcmF3IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2RlIGFu
ZCBhZGp1c3RzIHNlbGVjdGlvbi4KICAgICBpZiAobV9lbmRUYWJsZVJvdyAmJiBtX2VuZFRhYmxl
Um93LT5pc0Nvbm5lY3RlZCgpICYmIG1fZW5kVGFibGVSb3cgIT0gbV9zdGFydFRhYmxlUm93KSB7
CiAgICAgICAgIGF1dG8gcm93ID0gbWFrZVJlZlB0cihtX2VuZFRhYmxlUm93LT5wcmV2aW91c1Np
YmxpbmcoKSk7CiAgICAgICAgIHdoaWxlIChyb3cgJiYgcm93ICE9IG1fc3RhcnRUYWJsZVJvdykg
ewogICAgICAgICAgICAgYXV0byBwcmV2aW91c1JvdyA9IG1ha2VSZWZQdHIocm93LT5wcmV2aW91
c1NpYmxpbmcoKSk7Ci0gICAgICAgICAgICBpZiAoaXNUYWJsZVJvd0VtcHR5KHJvdy5nZXQoKSkp
IHsKLSAgICAgICAgICAgICAgICAvLyBVc2UgYSByYXcgcmVtb3ZlTm9kZSwgaW5zdGVhZCBvZiBE
ZWxldGVTZWxlY3Rpb25Db21tYW5kJ3MsIGJlY2F1c2UKLSAgICAgICAgICAgICAgICAvLyB0aGF0
IHdvbid0IHJlbW92ZSByb3dzLCBpdCBvbmx5IGVtcHRpZXMgdGhlbSBpbiBwcmVwYXJhdGlvbiBm
b3IgdGhpcyBmdW5jdGlvbi4KLSAgICAgICAgICAgICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
cmVtb3ZlTm9kZSgqcm93KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc1RhYmxl
Um93RW1wdHkocm93LmdldCgpKSkKKyAgICAgICAgICAgICAgICByZW1vdmVOb2RlVXBkYXRpbmdT
dGF0ZXMoKnJvdywgRG9Ob3RBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSk7CiAgICAgICAg
ICAgICByb3cgPSBXVEZNb3ZlKHByZXZpb3VzUm93KTsKICAgICAgICAgfQogICAgIH0KQEAgLTg2
NSw3ICs4NjQsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVByZXZpb3Vz
bHlTZWxlY3RlZEVtcHR5VGFibGVSb3dzKCkKICAgICAgICAgd2hpbGUgKHJvdyAmJiByb3cgIT0g
bV9lbmRUYWJsZVJvdykgewogICAgICAgICAgICAgYXV0byBuZXh0Um93ID0gbWFrZVJlZlB0cihy
b3ctPm5leHRTaWJsaW5nKCkpOwogICAgICAgICAgICAgaWYgKGlzVGFibGVSb3dFbXB0eShyb3cu
Z2V0KCkpKQotICAgICAgICAgICAgICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2Rl
KCpyb3cpOworICAgICAgICAgICAgICAgIHJlbW92ZU5vZGVVcGRhdGluZ1N0YXRlcygqcm93LCBE
b05vdEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlKTsKICAgICAgICAgICAgIHJvdyA9IFdU
Rk1vdmUobmV4dFJvdyk7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>