<?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>239389</bug_id>
          
          <creation_ts>2022-04-15 08:55:20 -0700</creation_ts>
          <short_desc>RenderDeprecatedFlexibleBox::applyLineClamp should use size_t</short_desc>
          <delta_ts>2022-04-17 06:34:14 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1861816</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-04-15 08:55:20 -0700</bug_when>
    <thetext>see bug 239029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861824</commentid>
    <comment_count>1</comment_count>
      <attachid>457704</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-04-15 09:18:44 -0700</bug_when>
    <thetext>Created attachment 457704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861905</commentid>
    <comment_count>2</comment_count>
      <attachid>457704</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-15 14:04:23 -0700</bug_when>
    <thetext>Comment on attachment 457704
Patch

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

&gt; Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:988
&gt; +static std::optional&lt;LayoutUnit&gt; getHeightForLineCount(const RenderBlockFlow&amp; block, size_t lineCount, bool includeBottom, size_t&amp; count)

If we are changing the return type, it would be better to return a structure with both the count and the height, instead of using a return value plus an out argument.

But maybe count is an in/out argument?

&gt; Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:1003
&gt; +                    return *height + obj-&gt;y() + (includeBottom ? (block.borderBottom() + block.paddingBottom()) : 0_lu);

I am not familiar with how we avoid overflow in math like this; do we stay far from the limits of the LayoutUnit type to avoid it? Is there a guarantee that this expression won’t overflow?

&gt; Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:1066
&gt; +    size_t numVisibleLines = lineClamp.isPercentage() ? std::max&lt;size_t&gt;(1, (maxLineCount + 1) * lineClamp.value() / 100) : lineClamp.value();

What prevents overflow in the expression &quot;(maxLineCount + 1) * lineClamp.value() / 100&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862068</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-04-16 12:21:21 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 457704 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457704&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:988
&gt; &gt; +static std::optional&lt;LayoutUnit&gt; getHeightForLineCount(const RenderBlockFlow&amp; block, size_t lineCount, bool includeBottom, size_t&amp; count)
&gt; 
&gt; If we are changing the return type, it would be better to return a structure
&gt; with both the count and the height, instead of using a return value plus an
&gt; out argument.
&gt; 
&gt; But maybe count is an in/out argument?
I agree, I don&apos;t particularly like this setup.
&apos;count&apos; is an in/out argument.


&gt; &gt; Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:1003
&gt; &gt; +                    return *height + obj-&gt;y() + (includeBottom ? (block.borderBottom() + block.paddingBottom()) : 0_lu);
&gt; 
&gt; I am not familiar with how we avoid overflow in math like this; do we stay
&gt; far from the limits of the LayoutUnit type to avoid it? Is there a guarantee
&gt; that this expression won’t overflow?
The last time I looked LayoutUnit used saturated arithmetic.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:1066
&gt; &gt; +    size_t numVisibleLines = lineClamp.isPercentage() ? std::max&lt;size_t&gt;(1, (maxLineCount + 1) * lineClamp.value() / 100) : lineClamp.value();
&gt; 
&gt; What prevents overflow in the expression &quot;(maxLineCount + 1) *
&gt; lineClamp.value() / 100&quot;?
Yeah, nothing really. In practice I don&apos;t think we could produce this high amount of lines, but it should not stop us from trying to avoid arithmetic overflow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862088</commentid>
    <comment_count>4</comment_count>
      <attachid>457756</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-04-16 15:43:01 -0700</bug_when>
    <thetext>Created attachment 457756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862133</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-17 06:33:49 -0700</bug_when>
    <thetext>Committed r292948 (249713@main): &lt;https://commits.webkit.org/249713@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457756.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862134</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-17 06:34:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/91861450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457704</attachid>
            <date>2022-04-15 09:18:44 -0700</date>
            <delta_ts>2022-04-16 15:42:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239389-20220415091844.patch</filename>
            <type>text/plain</type>
            <size>5868</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWMxODJhZWY4ZTJiMTIw
ODFkZDc0NzNmODhiMDg2ODc3NzE2ZGVhZi4uYWM2OGJjYWRmM2Q0OTE1YzhhYzQzOTI5ZTg4MDdj
ODI3ZWVkNjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTE1ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3g6OmFwcGx5TGluZUNsYW1wIHNob3VsZCB1c2Ugc2l6ZV90CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugc2l6ZV90IGNvbnNpc3RlbnRs
eSBpbiBhcHBseUxpbmVDbGFtcC4KKyAgICAgICAgV2hpbGUgTGluZUNsYW1wVmFsdWUgaXMgaW50
IGJhc2VkLCBpdCBjYW4gYWxzbyBiZSBhIHBlcmNlbnQgdHlwZSB3aGljaCBleHBhbmRzIHRoZSBj
bGFtcGluZyByYW5nZSB0byBzaXplX3QuCisKKyAgICAgICAgZ2V0SGVpZ2h0Rm9yTGluZUNvdW50
IC0+IHVzZSBzaXplX3QgYW5kIGRyb3AgdGhlIG1hZ2ljIC0xLgorICAgICAgICBoZWlnaHRGb3JM
aW5lQ291bnQgLT4gcmV0dXJuIExheW91dFVuaXQgaW5zdGVhZCBvZiBpbnQuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldEhlaWdodEZvckxpbmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpoZWlnaHRG
b3JMaW5lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94OjphcHBseUxpbmVDbGFtcCk6CisKIDIwMjItMDQtMTMgIEVsbGlvdHQgV2lsbGlhbXMgIDxl
bXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHB1YmxpYyB3YXRjaE9TIHdvcmtz
cGFjZSBidWlsZCBieSB1cGRhdGluZyBzY2hlbWUgYW5kIGJ1aWxkIHNldHRpbmdzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwCmluZGV4IDE0NmFjMDlhMDZmZDBhOTNkOTMzZjFiNWQ4MjYxMjdhYTM5MmRkMDkuLjYz
ZTRmNmMzMmUyYjE4MWU1YjM1NGE1YWU5OGUzZmU5ZDdlYzlkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CkBAIC05ODUsMTAgKzk4NSwxMCBAQCBzdGF0aWMgTGVnYWN5Um9vdElubGluZUJveCogbGluZUF0
SW5kZXgoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBpbnQgaSkKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotc3RhdGljIGludCBnZXRIZWlnaHRGb3JMaW5lQ291bnQoY29uc3QgUmVuZGVy
QmxvY2tGbG93JiBibG9jaywgaW50IGxpbmVDb3VudCwgYm9vbCBpbmNsdWRlQm90dG9tLCBpbnQm
IGNvdW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZ2V0SGVpZ2h0Rm9yTGlu
ZUNvdW50KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIHNpemVfdCBsaW5lQ291bnQsIGJv
b2wgaW5jbHVkZUJvdHRvbSwgc2l6ZV90JiBjb3VudCkKIHsKICAgICBpZiAoYmxvY2suc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKLSAgICAgICAgcmV0dXJuIC0x
OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKGJsb2NrLmNoaWxkcmVuSW5saW5lKCkp
IHsKICAgICAgICAgZm9yIChhdXRvKiBib3ggPSBibG9jay5maXJzdFJvb3RCb3goKTsgYm94OyBi
b3ggPSBib3gtPm5leHRSb290Qm94KCkpIHsKQEAgLTk5OSw5ICs5OTksOCBAQCBzdGF0aWMgaW50
IGdldEhlaWdodEZvckxpbmVDb3VudChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBpbnQg
bGluZUNvdW50LCBibwogICAgICAgICBSZW5kZXJCb3gqIG5vcm1hbEZsb3dDaGlsZFdpdGhvdXRM
aW5lcyA9IG51bGxwdHI7CiAgICAgICAgIGZvciAoYXV0byogb2JqID0gYmxvY2suZmlyc3RDaGls
ZEJveCgpOyBvYmo7IG9iaiA9IG9iai0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICAgICAg
aWYgKGlzPFJlbmRlckJsb2NrRmxvdz4oKm9iaikgJiYgc2hvdWxkSW5jbHVkZUxpbmVzRm9yUGFy
ZW50TGluZUNvdW50KGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKm9iaikpKSB7Ci0gICAgICAg
ICAgICAgICAgaW50IHJlc3VsdCA9IGdldEhlaWdodEZvckxpbmVDb3VudChkb3duY2FzdDxSZW5k
ZXJCbG9ja0Zsb3c+KCpvYmopLCBsaW5lQ291bnQsIGZhbHNlLCBjb3VudCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCAhPSAtMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dCArIG9iai0+eSgpICsgKGluY2x1ZGVCb3R0b20gPyAoYmxvY2suYm9yZGVyQm90dG9tKCkgKyBi
bG9jay5wYWRkaW5nQm90dG9tKCkpIDogMF9sdSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8g
aGVpZ2h0ID0gZ2V0SGVpZ2h0Rm9yTGluZUNvdW50KGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4o
Km9iaiksIGxpbmVDb3VudCwgZmFsc2UsIGNvdW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICpoZWlnaHQgKyBvYmotPnkoKSArIChpbmNsdWRlQm90dG9tID8gKGJsb2NrLmJvcmRlckJv
dHRvbSgpICsgYmxvY2sucGFkZGluZ0JvdHRvbSgpKSA6IDBfbHUpOwogICAgICAgICAgICAgfSBl
bHNlIGlmICghb2JqLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAg
ICAgICAgICAgbm9ybWFsRmxvd0NoaWxkV2l0aG91dExpbmVzID0gb2JqOwogICAgICAgICB9CkBA
IC0xMDA5LDEzICsxMDA4LDE1IEBAIHN0YXRpYyBpbnQgZ2V0SGVpZ2h0Rm9yTGluZUNvdW50KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGludCBsaW5lQ291bnQsIGJvCiAgICAgICAgICAg
ICByZXR1cm4gbm9ybWFsRmxvd0NoaWxkV2l0aG91dExpbmVzLT55KCkgKyBub3JtYWxGbG93Q2hp
bGRXaXRob3V0TGluZXMtPmhlaWdodCgpOwogICAgIH0KIAotICAgIHJldHVybiAtMTsKKyAgICBy
ZXR1cm4geyB9OwogfQogCi1zdGF0aWMgaW50IGhlaWdodEZvckxpbmVDb3VudChjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3csIGludCBsaW5lQ291bnQpCitzdGF0aWMgTGF5b3V0VW5pdCBoZWln
aHRGb3JMaW5lQ291bnQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBzaXplX3QgbGluZUNv
dW50KQogewotICAgIGludCBjb3VudCA9IDA7Ci0gICAgcmV0dXJuIGdldEhlaWdodEZvckxpbmVD
b3VudChmbG93LCBsaW5lQ291bnQsIHRydWUsIGNvdW50KTsKKyAgICBzaXplX3QgY291bnQgPSAw
OworICAgIGlmIChhdXRvIGhlaWdodCA9IGdldEhlaWdodEZvckxpbmVDb3VudChmbG93LCBsaW5l
Q291bnQsIHRydWUsIGNvdW50KSkKKyAgICAgICAgcmV0dXJuICpoZWlnaHQ7CisgICAgcmV0dXJu
IHsgfTsKIH0KIAogc3RhdGljIHNpemVfdCBsaW5lQ291bnRGb3IoY29uc3QgUmVuZGVyQmxvY2tG
bG93JiBibG9ja0Zsb3cpCkBAIC0xMDM3LDcgKzEwMzgsNyBAQCBzdGF0aWMgc2l6ZV90IGxpbmVD
b3VudEZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdykKIAogdm9pZCBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVyYXRvciYgaXRl
cmF0b3IsIGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIHsKLSAgICBpbnQgbWF4TGluZUNvdW50ID0g
MDsKKyAgICBzaXplX3QgbWF4TGluZUNvdW50ID0gMDsKICAgICBmb3IgKFJlbmRlckJveCogY2hp
bGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsK
ICAgICAgICAgaWYgKGNoaWxkRG9lc05vdEFmZmVjdFdpZHRoT3JGbGV4aW5nKGNoaWxkKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA1NSwxMyArMTA1NiwxNCBAQCB2b2lkIFJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVy
YXRvciwgYm9vbAogICAgICAgICB9CiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwog
ICAgICAgICBpZiAoY2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkgJiYgaXM8UmVuZGVy
QmxvY2tGbG93PigqY2hpbGQpKQotICAgICAgICAgICAgbWF4TGluZUNvdW50ID0gc3RkOjptYXg8
aW50PihtYXhMaW5lQ291bnQsIGxpbmVDb3VudEZvcihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+
KCpjaGlsZCkpKTsKKyAgICAgICAgICAgIG1heExpbmVDb3VudCA9IHN0ZDo6bWF4KG1heExpbmVD
b3VudCwgbGluZUNvdW50Rm9yKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKmNoaWxkKSkpOwog
ICAgIH0KIAogICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGxpbmVzIGFuZCB0aGVuIGFsdGVyIGFs
bCBibG9jayBmbG93IGNoaWxkcmVuIHdpdGggYXV0byBoZWlnaHQgdG8gdXNlIHRoZQogICAgIC8v
IHNwZWNpZmllZCBoZWlnaHQuIFdlIGFsd2F5cyB0cnkgdG8gbGVhdmUgcm9vbSBmb3IgYXQgbGVh
c3Qgb25lIGxpbmUuCi0gICAgTGluZUNsYW1wVmFsdWUgbGluZUNsYW1wID0gc3R5bGUoKS5saW5l
Q2xhbXAoKTsKLSAgICBpbnQgbnVtVmlzaWJsZUxpbmVzID0gbGluZUNsYW1wLmlzUGVyY2VudGFn
ZSgpID8gc3RkOjptYXgoMSwgKG1heExpbmVDb3VudCArIDEpICogbGluZUNsYW1wLnZhbHVlKCkg
LyAxMDApIDogbGluZUNsYW1wLnZhbHVlKCk7CisgICAgYXV0byBsaW5lQ2xhbXAgPSBzdHlsZSgp
LmxpbmVDbGFtcCgpOworICAgIEFTU0VSVCghbGluZUNsYW1wLmlzTm9uZSgpKTsKKyAgICBzaXpl
X3QgbnVtVmlzaWJsZUxpbmVzID0gbGluZUNsYW1wLmlzUGVyY2VudGFnZSgpID8gc3RkOjptYXg8
c2l6ZV90PigxLCAobWF4TGluZUNvdW50ICsgMSkgKiBsaW5lQ2xhbXAudmFsdWUoKSAvIDEwMCkg
OiBsaW5lQ2xhbXAudmFsdWUoKTsKICAgICBpZiAobnVtVmlzaWJsZUxpbmVzID49IG1heExpbmVD
b3VudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDcwLDExICsxMDcyLDExIEBAIHZvaWQgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUxpbmVDbGFtcChGbGV4Qm94SXRlcmF0b3Im
IGl0ZXJhdG9yLCBib29sCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBSZW5kZXJC
bG9ja0Zsb3cmIGJsb2NrQ2hpbGQgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpjaGlsZCk7
Ci0gICAgICAgIGludCBsaW5lQ291bnQgPSBsaW5lQ291bnRGb3IoYmxvY2tDaGlsZCk7CisgICAg
ICAgIGF1dG8gbGluZUNvdW50ID0gbGluZUNvdW50Rm9yKGJsb2NrQ2hpbGQpOwogICAgICAgICBp
ZiAobGluZUNvdW50IDw9IG51bVZpc2libGVMaW5lcykKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIExheW91dFVuaXQgbmV3SGVpZ2h0ID0gaGVpZ2h0Rm9yTGluZUNvdW50KGJsb2Nr
Q2hpbGQsIG51bVZpc2libGVMaW5lcyk7CisgICAgICAgIGF1dG8gbmV3SGVpZ2h0ID0gaGVpZ2h0
Rm9yTGluZUNvdW50KGJsb2NrQ2hpbGQsIG51bVZpc2libGVMaW5lcyk7CiAgICAgICAgIGlmIChu
ZXdIZWlnaHQgPT0gY2hpbGQtPmhlaWdodCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457756</attachid>
            <date>2022-04-16 15:43:01 -0700</date>
            <delta_ts>2022-04-17 06:33:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239389-20220416154300.patch</filename>
            <type>text/plain</type>
            <size>5956</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWMxODJhZWY4ZTJiMTIw
ODFkZDc0NzNmODhiMDg2ODc3NzE2ZGVhZi4uMTY0MGZkZDZiMzdjYTI3NjEyNDQzNzgwZTRmZTg3
MjE4ZjhlOTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTA0LTE2ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3g6OmFwcGx5TGluZUNsYW1wIHNob3VsZCB1c2Ugc2l6ZV90CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2Ugc2l6ZV90IGNvbnNpc3RlbnRseSBp
biBhcHBseUxpbmVDbGFtcC4KKyAgICAgICAgV2hpbGUgTGluZUNsYW1wVmFsdWUgaXMgaW50IGJh
c2VkLCBpdCBjYW4gYWxzbyBiZSBhIHBlcmNlbnQgdHlwZSB3aGljaCBleHBhbmRzIHRoZSBjbGFt
cGluZyByYW5nZSB0byBzaXplX3QuCisKKyAgICAgICAgZ2V0SGVpZ2h0Rm9yTGluZUNvdW50IC0+
IHVzZSBzaXplX3QgYW5kIGRyb3AgdGhlIG1hZ2ljIC0xLgorICAgICAgICBoZWlnaHRGb3JMaW5l
Q291bnQgLT4gcmV0dXJuIExheW91dFVuaXQgaW5zdGVhZCBvZiBpbnQuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldEhlaWdodEZvckxpbmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpoZWlnaHRGb3JM
aW5lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
OjphcHBseUxpbmVDbGFtcCk6CisKIDIwMjItMDQtMTMgIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdA
YXBwbGUuY29tPgogCiAgICAgICAgIFtYY29kZV0gRml4IHB1YmxpYyB3YXRjaE9TIHdvcmtzcGFj
ZSBidWlsZCBieSB1cGRhdGluZyBzY2hlbWUgYW5kIGJ1aWxkIHNldHRpbmdzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
Y3BwCmluZGV4IDE0NmFjMDlhMDZmZDBhOTNkOTMzZjFiNWQ4MjYxMjdhYTM5MmRkMDkuLjFiNzBk
MjE0YjQzNTUzZmU2MzFhMDAxZWY2YWE3Yjk4MTdjOTdkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBA
IC05ODUsMTAgKzk4NSwxMCBAQCBzdGF0aWMgTGVnYWN5Um9vdElubGluZUJveCogbGluZUF0SW5k
ZXgoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBpbnQgaSkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotc3RhdGljIGludCBnZXRIZWlnaHRGb3JMaW5lQ291bnQoY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiBibG9jaywgaW50IGxpbmVDb3VudCwgYm9vbCBpbmNsdWRlQm90dG9tLCBpbnQmIGNv
dW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZ2V0SGVpZ2h0Rm9yTGluZUNv
dW50KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIHNpemVfdCBsaW5lQ291bnQsIGJvb2wg
aW5jbHVkZUJvdHRvbSwgc2l6ZV90JiBjb3VudCkKIHsKICAgICBpZiAoYmxvY2suc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKLSAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgaWYgKGJsb2NrLmNoaWxkcmVuSW5saW5lKCkpIHsK
ICAgICAgICAgZm9yIChhdXRvKiBib3ggPSBibG9jay5maXJzdFJvb3RCb3goKTsgYm94OyBib3gg
PSBib3gtPm5leHRSb290Qm94KCkpIHsKQEAgLTk5OSw5ICs5OTksOCBAQCBzdGF0aWMgaW50IGdl
dEhlaWdodEZvckxpbmVDb3VudChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrLCBpbnQgbGlu
ZUNvdW50LCBibwogICAgICAgICBSZW5kZXJCb3gqIG5vcm1hbEZsb3dDaGlsZFdpdGhvdXRMaW5l
cyA9IG51bGxwdHI7CiAgICAgICAgIGZvciAoYXV0byogb2JqID0gYmxvY2suZmlyc3RDaGlsZEJv
eCgpOyBvYmo7IG9iaiA9IG9iai0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICAgICAgaWYg
KGlzPFJlbmRlckJsb2NrRmxvdz4oKm9iaikgJiYgc2hvdWxkSW5jbHVkZUxpbmVzRm9yUGFyZW50
TGluZUNvdW50KGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKm9iaikpKSB7Ci0gICAgICAgICAg
ICAgICAgaW50IHJlc3VsdCA9IGdldEhlaWdodEZvckxpbmVDb3VudChkb3duY2FzdDxSZW5kZXJC
bG9ja0Zsb3c+KCpvYmopLCBsaW5lQ291bnQsIGZhbHNlLCBjb3VudCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdCAhPSAtMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCAr
IG9iai0+eSgpICsgKGluY2x1ZGVCb3R0b20gPyAoYmxvY2suYm9yZGVyQm90dG9tKCkgKyBibG9j
ay5wYWRkaW5nQm90dG9tKCkpIDogMF9sdSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGVp
Z2h0ID0gZ2V0SGVpZ2h0Rm9yTGluZUNvdW50KGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKm9i
aiksIGxpbmVDb3VudCwgZmFsc2UsIGNvdW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICpoZWlnaHQgKyBvYmotPnkoKSArIChpbmNsdWRlQm90dG9tID8gKGJsb2NrLmJvcmRlckJvdHRv
bSgpICsgYmxvY2sucGFkZGluZ0JvdHRvbSgpKSA6IDBfbHUpOwogICAgICAgICAgICAgfSBlbHNl
IGlmICghb2JqLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAg
ICAgICAgbm9ybWFsRmxvd0NoaWxkV2l0aG91dExpbmVzID0gb2JqOwogICAgICAgICB9CkBAIC0x
MDA5LDEzICsxMDA4LDE1IEBAIHN0YXRpYyBpbnQgZ2V0SGVpZ2h0Rm9yTGluZUNvdW50KGNvbnN0
IFJlbmRlckJsb2NrRmxvdyYgYmxvY2ssIGludCBsaW5lQ291bnQsIGJvCiAgICAgICAgICAgICBy
ZXR1cm4gbm9ybWFsRmxvd0NoaWxkV2l0aG91dExpbmVzLT55KCkgKyBub3JtYWxGbG93Q2hpbGRX
aXRob3V0TGluZXMtPmhlaWdodCgpOwogICAgIH0KIAotICAgIHJldHVybiAtMTsKKyAgICByZXR1
cm4geyB9OwogfQogCi1zdGF0aWMgaW50IGhlaWdodEZvckxpbmVDb3VudChjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3csIGludCBsaW5lQ291bnQpCitzdGF0aWMgTGF5b3V0VW5pdCBoZWlnaHRG
b3JMaW5lQ291bnQoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBzaXplX3QgbGluZUNvdW50
KQogewotICAgIGludCBjb3VudCA9IDA7Ci0gICAgcmV0dXJuIGdldEhlaWdodEZvckxpbmVDb3Vu
dChmbG93LCBsaW5lQ291bnQsIHRydWUsIGNvdW50KTsKKyAgICBzaXplX3QgY291bnQgPSAwOwor
ICAgIGlmIChhdXRvIGhlaWdodCA9IGdldEhlaWdodEZvckxpbmVDb3VudChmbG93LCBsaW5lQ291
bnQsIHRydWUsIGNvdW50KSkKKyAgICAgICAgcmV0dXJuICpoZWlnaHQ7CisgICAgcmV0dXJuIHsg
fTsKIH0KIAogc3RhdGljIHNpemVfdCBsaW5lQ291bnRGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93
JiBibG9ja0Zsb3cpCkBAIC0xMDM3LDcgKzEwMzgsNyBAQCBzdGF0aWMgc2l6ZV90IGxpbmVDb3Vu
dEZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdykKIAogdm9pZCBSZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJdGVyYXRvciYgaXRlcmF0
b3IsIGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIHsKLSAgICBpbnQgbWF4TGluZUNvdW50ID0gMDsK
KyAgICBzaXplX3QgbWF4TGluZUNvdW50ID0gMDsKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQg
PSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKICAg
ICAgICAgaWYgKGNoaWxkRG9lc05vdEFmZmVjdFdpZHRoT3JGbGV4aW5nKGNoaWxkKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTA1NSwxMyArMTA1NiwxOSBAQCB2b2lkIFJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRv
ciwgYm9vbAogICAgICAgICB9CiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogICAg
ICAgICBpZiAoY2hpbGQtPnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCkgJiYgaXM8UmVuZGVyQmxv
Y2tGbG93PigqY2hpbGQpKQotICAgICAgICAgICAgbWF4TGluZUNvdW50ID0gc3RkOjptYXg8aW50
PihtYXhMaW5lQ291bnQsIGxpbmVDb3VudEZvcihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpj
aGlsZCkpKTsKKyAgICAgICAgICAgIG1heExpbmVDb3VudCA9IHN0ZDo6bWF4KG1heExpbmVDb3Vu
dCwgbGluZUNvdW50Rm9yKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKmNoaWxkKSkpOwogICAg
IH0KIAogICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGxpbmVzIGFuZCB0aGVuIGFsdGVyIGFsbCBi
bG9jayBmbG93IGNoaWxkcmVuIHdpdGggYXV0byBoZWlnaHQgdG8gdXNlIHRoZQogICAgIC8vIHNw
ZWNpZmllZCBoZWlnaHQuIFdlIGFsd2F5cyB0cnkgdG8gbGVhdmUgcm9vbSBmb3IgYXQgbGVhc3Qg
b25lIGxpbmUuCi0gICAgTGluZUNsYW1wVmFsdWUgbGluZUNsYW1wID0gc3R5bGUoKS5saW5lQ2xh
bXAoKTsKLSAgICBpbnQgbnVtVmlzaWJsZUxpbmVzID0gbGluZUNsYW1wLmlzUGVyY2VudGFnZSgp
ID8gc3RkOjptYXgoMSwgKG1heExpbmVDb3VudCArIDEpICogbGluZUNsYW1wLnZhbHVlKCkgLyAx
MDApIDogbGluZUNsYW1wLnZhbHVlKCk7CisgICAgYXV0byBsaW5lQ2xhbXAgPSBzdHlsZSgpLmxp
bmVDbGFtcCgpOworICAgIEFTU0VSVCghbGluZUNsYW1wLmlzTm9uZSgpKTsKKworICAgIHNpemVf
dCBudW1WaXNpYmxlTGluZXMgPSBsaW5lQ2xhbXAudmFsdWUoKTsKKyAgICBpZiAobGluZUNsYW1w
LmlzUGVyY2VudGFnZSgpKSB7CisgICAgICAgIGZsb2F0IHBlcmNlbnRWYWx1ZSA9IGxpbmVDbGFt
cC52YWx1ZSgpOworICAgICAgICBudW1WaXNpYmxlTGluZXMgPSBzdGQ6Om1heDxzaXplX3Q+KDEs
IChtYXhMaW5lQ291bnQgKyAxKSAqIHBlcmNlbnRWYWx1ZSAvIDEwMC5mKTsKKyAgICB9CiAgICAg
aWYgKG51bVZpc2libGVMaW5lcyA+PSBtYXhMaW5lQ291bnQpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTA3MCwxMSArMTA3NywxMSBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
YXBwbHlMaW5lQ2xhbXAoRmxleEJveEl0ZXJhdG9yJiBpdGVyYXRvciwgYm9vbAogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgUmVuZGVyQmxvY2tGbG93JiBibG9ja0NoaWxkID0gZG93
bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGQpOwotICAgICAgICBpbnQgbGluZUNvdW50ID0g
bGluZUNvdW50Rm9yKGJsb2NrQ2hpbGQpOworICAgICAgICBhdXRvIGxpbmVDb3VudCA9IGxpbmVD
b3VudEZvcihibG9ja0NoaWxkKTsKICAgICAgICAgaWYgKGxpbmVDb3VudCA8PSBudW1WaXNpYmxl
TGluZXMpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBMYXlvdXRVbml0IG5ld0hl
aWdodCA9IGhlaWdodEZvckxpbmVDb3VudChibG9ja0NoaWxkLCBudW1WaXNpYmxlTGluZXMpOwor
ICAgICAgICBhdXRvIG5ld0hlaWdodCA9IGhlaWdodEZvckxpbmVDb3VudChibG9ja0NoaWxkLCBu
dW1WaXNpYmxlTGluZXMpOwogICAgICAgICBpZiAobmV3SGVpZ2h0ID09IGNoaWxkLT5oZWlnaHQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>