<?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>189326</bug_id>
          
          <creation_ts>2018-09-05 16:17:52 -0700</creation_ts>
          <short_desc>[WHLSL] The interpreter should evaluate arguments right-to-left</short_desc>
          <delta_ts>2018-10-13 14:35:40 -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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>188641</dup_id>
          
          <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>
          <dependson>189360</dependson>
          <blocked>176199</blocked>
    
    <blocked>188402</blocked>
    
    <blocked>189202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Denney">tdenney</reporter>
          <assigned_to name="Thomas Denney">tdenney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>tdenney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456914</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-05 16:17:52 -0700</bug_when>
    <thetext>In order to be consistent with C, the arguments of function calls should be evaluated right-to-left. C doesn’t define an evaluation order for operators (like +) but because we treat them as “native functions” we should strictly evaluate them right-to-left.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456916</commentid>
    <comment_count>1</comment_count>
      <attachid>348978</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-05 16:21:52 -0700</bug_when>
    <thetext>Created attachment 348978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456937</commentid>
    <comment_count>2</comment_count>
      <attachid>348982</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-05 17:12:43 -0700</bug_when>
    <thetext>Created attachment 348982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456955</commentid>
    <comment_count>3</comment_count>
      <attachid>348982</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-05 18:20:20 -0700</bug_when>
    <thetext>Comment on attachment 348982
Patch

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

This order is not determined in C or C++, but it is commonly evaluated in a consistent order for reasons.  See https://en.cppreference.com/w/c/language/eval_order
I think it would be great if WHLSL had a defined order, but don&apos;t claim it&apos;s to be consistent with C.

&gt; Tools/ChangeLog:8
&gt; +        The behavior of the interpreter now matches the behavior of the compiler

What compiler are you talking about?  It&apos;s possible the behavior of that compiler is unspecified but it happens to be right-to-left in all the cases you&apos;ve checked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456963</commentid>
    <comment_count>4</comment_count>
      <attachid>348982</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-05 19:12:39 -0700</bug_when>
    <thetext>Comment on attachment 348982
Patch

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

&gt; Tools/WebGPUShadingLanguageRI/Test.js:7637
&gt; +        int foo() { return *bar(10) + *bar(20); }
&gt; +
&gt; +        thread int* bar(int value)
&gt; +        {
&gt; +            int x = value;
&gt; +            return &amp;x;
&gt; +        }

I don&apos;t think we should commit a test that is fundamentally wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456964</commentid>
    <comment_count>5</comment_count>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-05 19:26:10 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 348982 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348982&amp;action=review
&gt; 
&gt; This order is not determined in C or C++, but it is commonly evaluated in a
&gt; consistent order for reasons.  See
&gt; https://en.cppreference.com/w/c/language/eval_order
&gt; I think it would be great if WHLSL had a defined order, but don&apos;t claim it&apos;s
&gt; to be consistent with C.
&gt; 
&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        The behavior of the interpreter now matches the behavior of the compiler
&gt; 
&gt; What compiler are you talking about?  It&apos;s possible the behavior of that
&gt; compiler is unspecified but it happens to be right-to-left in all the cases
&gt; you&apos;ve checked.

The WHLSL -&gt; Metal code generation generates code so that the arguments are explicitly evaluated right-to-left before the function call and are then passed separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457157</commentid>
    <comment_count>6</comment_count>
      <attachid>349046</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-06 11:24:10 -0700</bug_when>
    <thetext>Created attachment 349046
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458301</commentid>
    <comment_count>7</comment_count>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-10 16:22:43 -0700</bug_when>
    <thetext>The most recent patch of https://bugs.webkit.org/show_bug.cgi?id=188641 resolves this, and it would only be a two line change to that patch to resolve this bug.

*** This bug has been marked as a duplicate of bug 188641 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459201</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-12 18:41:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/44402790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468818</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 14:35:40 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/42</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348978</attachid>
            <date>2018-09-05 16:21:52 -0700</date>
            <delta_ts>2018-09-05 17:12:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189326-20180905162151.patch</filename>
            <type>text/plain</type>
            <size>3482</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDYwN2JjYjg2YzQ3NGI1MDhjZTZjY2Q0M2YwMzUxMDBk
MTYyNDI3Yi4uODVlMTQ2NDQwYzJkNmQzOWJmNDM4MTBkYjBiZTI0NTk0MDJiMjIxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE4LTA5LTA1ICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dITFNMXSBUaGUgaW50ZXJwcmV0ZXIgc2hvdWxkIGV2YWx1YXRlIGFyZ3VtZW50cyBy
aWdodC10by1sZWZ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODkzMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgYmVoYXZpb3Igb2YgdGhlIGludGVycHJldGVyIG5vdyBtYXRjaGVzIHRoZSBiZWhh
dmlvciBvZiB0aGUgY29tcGlsZXIKKyAgICAgICAgd2l0aCByZXNwZWN0IHRvIGV2YWx1YXRpb24g
b3JkZXIuCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanM6
IENvcnJlY3QgdGhlIGV2YWx1YXRpb24gb3JkZXIuCisgICAgICAgIChFdmFsdWF0b3IucHJvdG90
eXBlLnZpc2l0RnVuY3Rpb25MaWtlQmxvY2spOgorICAgICAgICAoRXZhbHVhdG9yLnByb3RvdHlw
ZS52aXNpdENhbGxFeHByZXNzaW9uKToKKyAgICAgICAgKEV2YWx1YXRvcik6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczogQWRkIHRlc3QgZm9yIGV2YWx1YXRpb24g
b3JkZXIuCisKIDIwMTgtMDktMDUgIFdvb2Ryb3cgV2FuZyAgPHdvb2Ryb3dfd2FuZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGluZnJhc3RydWN0dXJlIHRvIGR1bXAgcmVzb3VyY2UgbG9hZCBz
dGF0aXN0aWNzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFs
dWF0b3IuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKaW5k
ZXggYWVlMGEyMzEyZmVkNzJjMGM4N2U3M2YxOGFjMzQ4ZWExYWMzYzdiYS4uNGZjNmFhNmMzOWFl
ODYwMDdiNTAzODQ3YzQ4YzA2YmQ5NzQ3YTllMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0V2YWx1YXRvci5qcwpAQCAtNzQsNyArNzQsNyBAQCBjbGFzcyBFdmFsdWF0b3IgZXh0
ZW5kcyBWaXNpdG9yIHsKICAgICAKICAgICB2aXNpdEZ1bmN0aW9uTGlrZUJsb2NrKG5vZGUpCiAg
ICAgewotICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYXJndW1lbnRMaXN0Lmxlbmd0
aDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IGkgPSBub2RlLmFyZ3VtZW50TGlzdC5sZW5ndGg7
IGktLTspIHsKICAgICAgICAgICAgIG5vZGUucGFyYW1ldGVyc1tpXS5lUHRyLmNvcHlGcm9tKAog
ICAgICAgICAgICAgICAgIG5vZGUuYXJndW1lbnRMaXN0W2ldLnZpc2l0KHRoaXMpLAogICAgICAg
ICAgICAgICAgIG5vZGUucGFyYW1ldGVyc1tpXS50eXBlLnNpemUpOwpAQCAtMzEyLDcgKzMxMiw3
IEBAIGNsYXNzIEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3IgewogICAgIHsKICAgICAgICAgLy8g
V2UgZXZhbHVhdGUgaW5saW5lZCBBU1RzLCBzbyB0aGlzIGNhbiBvbmx5IGJlIGEgbmF0aXZlIGNh
bGwuCiAgICAgICAgIGxldCBjYWxsQXJndW1lbnRzID0gW107Ci0gICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgbm9kZS5hcmd1bWVudExpc3QubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChs
ZXQgaSA9IG5vZGUuYXJndW1lbnRMaXN0Lmxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgbGV0
IGFyZ3VtZW50ID0gbm9kZS5hcmd1bWVudExpc3RbaV07CiAgICAgICAgICAgICBsZXQgdHlwZSA9
IG5vZGUuZnVuYy5wYXJhbWV0ZXJUeXBlc1tpXTsKICAgICAgICAgICAgIGlmICghdHlwZSB8fCAh
YXJndW1lbnQpCkBAIC0zMjAsNyArMzIwLDcgQEAgY2xhc3MgRXZhbHVhdG9yIGV4dGVuZHMgVmlz
aXRvciB7CiAgICAgICAgICAgICBsZXQgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50LnZpc2l0KHRo
aXMpOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudFZhbHVlKQogICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiTnVsbCBhcmd1bWVudCB2YWx1ZSwgaSA9ICIgKyBpICsgIiwgbm9kZSA9
ICIgKyBub2RlKTsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVudHMucHVzaCgoKSA9PiB7CisgICAg
ICAgICAgICBjYWxsQXJndW1lbnRzLnVuc2hpZnQoKCkgPT4gewogICAgICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSB0aGlzLl9zbmFwc2hvdCh0eXBlLCBudWxsLCBhcmd1bWVudFZhbHVlKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCA5MGQ1ZTVjY2Q1MGNmZjRhOTQyYjkxNzY2YjI3
Mjg2OWYwOTQ0YzY3Li43YTRlNGJhYzczOWNlZTZiNjBjNjA0MDY4NTk5YjZmODdhZDhlMzU0IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTc2MjYsNiArNzYyNiwyOCBA
QCB0ZXN0cy50ZXh0dXJlR2F0aGVyID0gZnVuY3Rpb24oKSB7CiAgICAgLy8gRklYTUU6IEdhdGhl
ciBvdGhlciBjb21wb25lbnRzCiB9CiAKK3Rlc3RzLmV2YWx1YXRpb25PcmRlckZvckFyZ3VtZW50
cyA9ICgpID0+IHsKKyAgICBjb25zdCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50IGZv
bygpIHsgcmV0dXJuICpiYXIoMTApICsgKmJhcigyMCk7IH0KKworICAgICAgICB0aHJlYWQgaW50
KiBiYXIoaW50IHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgeCA9IHZhbHVlOwor
ICAgICAgICAgICAgcmV0dXJuICZ4OworICAgICAgICB9CisKKyAgICAgICAgaW50IGJheigpIHsg
cmV0dXJuIHBsdXMoYmFyKDEwKSwgYmFyKDIwKSk7IH0KKworICAgICAgICBpbnQgcGx1cyh0aHJl
YWQgaW50KiB4LCB0aHJlYWQgaW50KiB5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
KnggKyAqeTsKKyAgICAgICAgfQorICAgIGApOworCisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2Fs
bEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDIwKTsKKyAgICBjaGVja0ludChwcm9ncmFt
LCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwgMjApOworfQorCiBva1RvVGVzdCA9
IHRydWU7CiAKIGxldCB0ZXN0RmlsdGVyID0gLy4qLzsgLy8gcnVuIGV2ZXJ5dGhpbmcgYnkgZGVm
YXVsdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348982</attachid>
            <date>2018-09-05 17:12:43 -0700</date>
            <delta_ts>2018-09-06 11:24:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189326-20180905171241.patch</filename>
            <type>text/plain</type>
            <size>3845</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDYwN2JjYjg2YzQ3NGI1MDhjZTZjY2Q0M2YwMzUxMDBk
MTYyNDI3Yi4uNjdhNDJmMzQ1M2I3NTIyNGE4YTZhNTZhZjMzYzFiYzJjYjliMDEyYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDE4LTA5LTA1ICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dITFNMXSBUaGUgaW50ZXJwcmV0ZXIgc2hvdWxkIGV2YWx1YXRlIGFyZ3VtZW50cyBy
aWdodC10by1sZWZ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODkzMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgYmVoYXZpb3Igb2YgdGhlIGludGVycHJldGVyIG5vdyBtYXRjaGVzIHRoZSBiZWhh
dmlvciBvZiB0aGUgY29tcGlsZXIKKyAgICAgICAgd2l0aCByZXNwZWN0IHRvIGV2YWx1YXRpb24g
b3JkZXIuCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanM6
IENvcnJlY3QgdGhlIGV2YWx1YXRpb24gb3JkZXIuCisgICAgICAgIChFdmFsdWF0b3IucHJvdG90
eXBlLnZpc2l0RnVuY3Rpb25MaWtlQmxvY2spOiBOb3RlIHRoYXQgdGhlIGFncnVtZW50cworICAg
ICAgICBtdXN0IGFsbCBiZSBldmFsdWF0ZWQgYmVmb3JlIHRoZXkgY2FuIGJlIGNvcGllZCBpbi4K
KyAgICAgICAgKEV2YWx1YXRvci5wcm90b3R5cGUudmlzaXRDYWxsRXhwcmVzc2lvbik6CisgICAg
ICAgIChFdmFsdWF0b3IpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
anM6IEFkZCB0ZXN0IGZvciBldmFsdWF0aW9uIG9yZGVyLgorCiAyMDE4LTA5LTA1ICBXb29kcm93
IFdhbmcgIDx3b29kcm93X3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBpbmZyYXN0cnVj
dHVyZSB0byBkdW1wIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCmluZGV4IGFlZTBhMjMxMmZlZDcyYzBjODdlNzNmMThh
YzM0OGVhMWFjM2M3YmEuLmQ4MTgyZmMxYmQyMTM0MDFiY2YxZTMxZTE4NzY2MzM1YmFmZDQ5NTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9FdmFsdWF0b3IuanMKQEAgLTc0LDkg
Kzc0LDEzIEBAIGNsYXNzIEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3IgewogICAgIAogICAgIHZp
c2l0RnVuY3Rpb25MaWtlQmxvY2sobm9kZSkKICAgICB7Ci0gICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgbm9kZS5hcmd1bWVudExpc3QubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgY29uc3QgYXJn
VmFsdWVzID0gW107CisgICAgICAgIGZvciAobGV0IGkgPSBub2RlLmFyZ3VtZW50TGlzdC5sZW5n
dGg7IGktLTspCisgICAgICAgICAgICBhcmdWYWx1ZXMudW5zaGlmdChub2RlLmFyZ3VtZW50TGlz
dFtpXS52aXNpdCh0aGlzKSk7CisKKyAgICAgICAgZm9yIChsZXQgaSA9IG5vZGUuYXJndW1lbnRM
aXN0Lmxlbmd0aDsgaS0tOykgewogICAgICAgICAgICAgbm9kZS5wYXJhbWV0ZXJzW2ldLmVQdHIu
Y29weUZyb20oCi0gICAgICAgICAgICAgICAgbm9kZS5hcmd1bWVudExpc3RbaV0udmlzaXQodGhp
cyksCisgICAgICAgICAgICAgICAgYXJnVmFsdWVzW2ldLAogICAgICAgICAgICAgICAgIG5vZGUu
cGFyYW1ldGVyc1tpXS50eXBlLnNpemUpOwogICAgICAgICB9CiAgICAgICAgIGxldCByZXN1bHQg
PSB0aGlzLl9ydW5Cb2R5KG5vZGUucmV0dXJuVHlwZSwgbm9kZS5yZXR1cm5FUHRyLCBub2RlLmJv
ZHkpOwpAQCAtMzEyLDcgKzMxNiw3IEBAIGNsYXNzIEV2YWx1YXRvciBleHRlbmRzIFZpc2l0b3Ig
ewogICAgIHsKICAgICAgICAgLy8gV2UgZXZhbHVhdGUgaW5saW5lZCBBU1RzLCBzbyB0aGlzIGNh
biBvbmx5IGJlIGEgbmF0aXZlIGNhbGwuCiAgICAgICAgIGxldCBjYWxsQXJndW1lbnRzID0gW107
Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5hcmd1bWVudExpc3QubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgZm9yIChsZXQgaSA9IG5vZGUuYXJndW1lbnRMaXN0Lmxlbmd0aDsgaS0t
OykgewogICAgICAgICAgICAgbGV0IGFyZ3VtZW50ID0gbm9kZS5hcmd1bWVudExpc3RbaV07CiAg
ICAgICAgICAgICBsZXQgdHlwZSA9IG5vZGUuZnVuYy5wYXJhbWV0ZXJUeXBlc1tpXTsKICAgICAg
ICAgICAgIGlmICghdHlwZSB8fCAhYXJndW1lbnQpCkBAIC0zMjAsNyArMzI0LDcgQEAgY2xhc3Mg
RXZhbHVhdG9yIGV4dGVuZHMgVmlzaXRvciB7CiAgICAgICAgICAgICBsZXQgYXJndW1lbnRWYWx1
ZSA9IGFyZ3VtZW50LnZpc2l0KHRoaXMpOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudFZhbHVl
KQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTnVsbCBhcmd1bWVudCB2YWx1ZSwg
aSA9ICIgKyBpICsgIiwgbm9kZSA9ICIgKyBub2RlKTsKLSAgICAgICAgICAgIGNhbGxBcmd1bWVu
dHMucHVzaCgoKSA9PiB7CisgICAgICAgICAgICBjYWxsQXJndW1lbnRzLnVuc2hpZnQoKCkgPT4g
ewogICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9zbmFwc2hvdCh0eXBlLCBudWxs
LCBhcmd1bWVudFZhbHVlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0
LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwppbmRleCA5MGQ1ZTVj
Y2Q1MGNmZjRhOTQyYjkxNzY2YjI3Mjg2OWYwOTQ0YzY3Li43YTRlNGJhYzczOWNlZTZiNjBjNjA0
MDY4NTk5YjZmODdhZDhlMzU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMK
QEAgLTc2MjYsNiArNzYyNiwyOCBAQCB0ZXN0cy50ZXh0dXJlR2F0aGVyID0gZnVuY3Rpb24oKSB7
CiAgICAgLy8gRklYTUU6IEdhdGhlciBvdGhlciBjb21wb25lbnRzCiB9CiAKK3Rlc3RzLmV2YWx1
YXRpb25PcmRlckZvckFyZ3VtZW50cyA9ICgpID0+IHsKKyAgICBjb25zdCBwcm9ncmFtID0gZG9Q
cmVwKGAKKyAgICAgICAgaW50IGZvbygpIHsgcmV0dXJuICpiYXIoMTApICsgKmJhcigyMCk7IH0K
KworICAgICAgICB0aHJlYWQgaW50KiBiYXIoaW50IHZhbHVlKQorICAgICAgICB7CisgICAgICAg
ICAgICBpbnQgeCA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuICZ4OworICAgICAgICB9CisK
KyAgICAgICAgaW50IGJheigpIHsgcmV0dXJuIHBsdXMoYmFyKDEwKSwgYmFyKDIwKSk7IH0KKwor
ICAgICAgICBpbnQgcGx1cyh0aHJlYWQgaW50KiB4LCB0aHJlYWQgaW50KiB5KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gKnggKyAqeTsKKyAgICAgICAgfQorICAgIGApOworCisgICAg
Y2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDIwKTsK
KyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImJheiIsIFtdKSwg
MjApOworfQorCiBva1RvVGVzdCA9IHRydWU7CiAKIGxldCB0ZXN0RmlsdGVyID0gLy4qLzsgLy8g
cnVuIGV2ZXJ5dGhpbmcgYnkgZGVmYXVsdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349046</attachid>
            <date>2018-09-06 11:24:10 -0700</date>
            <delta_ts>2018-09-06 11:24:10 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189326-20180906112406.patch</filename>
            <type>text/plain</type>
            <size>4941</size>
            <attacher name="Thomas Denney">tdenney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzM5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWExZTIxNjQ0OTQ1MWJiNDM2ZDFkNzMzMDBmMmRmOWUx
MTYxNjc2YS4uNjk5MTZhY2ZiZGVkZDI4MTdmNDQ3NmVhZDA1ZjE2NThmZTQ2ZmFjMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDE4LTA5LTA1ICBUaG9tYXMgRGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dITFNMXSBUaGUgaW50ZXJwcmV0ZXIgc2hvdWxkIGV2YWx1YXRlIGFyZ3VtZW50cyBy
aWdodC10by1sZWZ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODkzMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgYmVoYXZpb3Igb2YgdGhlIGludGVycHJldGVyIG5vdyBtYXRjaGVzIHRoZSBzcGVj
aWZpY2F0aW9uIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBldmFsdWF0aW9uIG9yZGVyLgorCisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzOiBDb3JyZWN0IHRo
ZSBldmFsdWF0aW9uIG9yZGVyLgorICAgICAgICAoRXZhbHVhdG9yLnByb3RvdHlwZS52aXNpdEZ1
bmN0aW9uTGlrZUJsb2NrKTogTm90ZSB0aGF0IHRoZSBhZ3J1bWVudHMKKyAgICAgICAgbXVzdCBh
bGwgYmUgZXZhbHVhdGVkIGJlZm9yZSB0aGV5IGNhbiBiZSBjb3BpZWQgaW4uCisgICAgICAgIChF
dmFsdWF0b3IucHJvdG90eXBlLnZpc2l0Q2FsbEV4cHJlc3Npb24pOgorICAgICAgICAoRXZhbHVh
dG9yKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOiBBZGQgdGVz
dCBmb3IgZXZhbHVhdGlvbiBvcmRlci4KKwogMjAxOC0wOS0wNiAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gVGhlIHBhcnNlciBpcyB0
b28gc2xvdwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVh
dG9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRXZhbHVhdG9yLmpzCmluZGV4
IGFlZTBhMjMxMmZlZDcyYzBjODdlNzNmMThhYzM0OGVhMWFjM2M3YmEuLjZlMjNlYjhlOTMyMWQ4
MzkxY2RmNzNmMGQ4NmE3ZGVkNmE3OTNkYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL0V2YWx1YXRvci5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9FdmFsdWF0b3IuanMKQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3MgRXZhbHVhdG9yIGV4dGVu
ZHMgVmlzaXRvciB7CiAgICAgCiAgICAgdmlzaXRGdW5jdGlvbkxpa2VCbG9jayhub2RlKQogICAg
IHsKLSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmFyZ3VtZW50TGlzdC5sZW5ndGg7
ICsraSkgeworICAgICAgICBmb3IgKGxldCBpID0gbm9kZS5hcmd1bWVudExpc3QubGVuZ3RoOyBp
LS07KSB7CiAgICAgICAgICAgICBub2RlLnBhcmFtZXRlcnNbaV0uZVB0ci5jb3B5RnJvbSgKICAg
ICAgICAgICAgICAgICBub2RlLmFyZ3VtZW50TGlzdFtpXS52aXNpdCh0aGlzKSwKICAgICAgICAg
ICAgICAgICBub2RlLnBhcmFtZXRlcnNbaV0udHlwZS5zaXplKTsKQEAgLTMxMiw3ICszMTIsNyBA
QCBjbGFzcyBFdmFsdWF0b3IgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICB7CiAgICAgICAgIC8vIFdl
IGV2YWx1YXRlIGlubGluZWQgQVNUcywgc28gdGhpcyBjYW4gb25seSBiZSBhIG5hdGl2ZSBjYWxs
LgogICAgICAgICBsZXQgY2FsbEFyZ3VtZW50cyA9IFtdOwotICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IG5vZGUuYXJndW1lbnRMaXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAobGV0
IGkgPSBub2RlLmFyZ3VtZW50TGlzdC5sZW5ndGg7IGktLTspIHsKICAgICAgICAgICAgIGxldCBh
cmd1bWVudCA9IG5vZGUuYXJndW1lbnRMaXN0W2ldOwogICAgICAgICAgICAgbGV0IHR5cGUgPSBu
b2RlLmZ1bmMucGFyYW1ldGVyVHlwZXNbaV07CiAgICAgICAgICAgICBpZiAoIXR5cGUgfHwgIWFy
Z3VtZW50KQpAQCAtMzIwLDE3ICszMjAsOSBAQCBjbGFzcyBFdmFsdWF0b3IgZXh0ZW5kcyBWaXNp
dG9yIHsKICAgICAgICAgICAgIGxldCBhcmd1bWVudFZhbHVlID0gYXJndW1lbnQudmlzaXQodGhp
cyk7CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50VmFsdWUpCiAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJOdWxsIGFyZ3VtZW50IHZhbHVlLCBpID0gIiArIGkgKyAiLCBub2RlID0g
IiArIG5vZGUpOwotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy5wdXNoKCgpID0+IHsKLSAgICAg
ICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fc25hcHNob3QodHlwZSwgbnVsbCwgYXJndW1l
bnRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy51bnNoaWZ0KEVCdWZmZXIuYWxsb3dBbGxvY2F0
aW9uKCgpID0+IHRoaXMuX3NuYXBzaG90KHR5cGUsIG51bGwsIGFyZ3VtZW50VmFsdWUpKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEZvciBzaW1wbGljaXR5LCB3ZSBhbGxvdyBp
bnRyaW5zaWNzIHRvIGp1c3QgYWxsb2NhdGUgbmV3IGJ1ZmZlcnMsIGFuZCB3ZSBhbGxvY2F0ZSBu
ZXcKLSAgICAgICAgLy8gYnVmZmVycyB3aGVuIHNuYXBzaG90dGluZyB0aGVpciBhcmd1bWVudHMu
IFRoaXMgaXMgbm90IG9ic2VydmFibGUgdG8gdGhlIHVzZXIsIHNvIGl0J3MgT0suCi0gICAgICAg
IGxldCByZXN1bHQgPSBFQnVmZmVyLmFsbG93QWxsb2NhdGlvbigKLSAgICAgICAgICAgICgpID0+
IG5vZGUuZnVuYy5pbXBsZW1lbnRhdGlvbihjYWxsQXJndW1lbnRzLm1hcCh0aHVuayA9PiB0aHVu
aygpKSwgbm9kZSkpOwotICAgICAgICAKKyAgICAgICAgbGV0IHJlc3VsdCA9IEVCdWZmZXIuYWxs
b3dBbGxvY2F0aW9uKCgpID0+IG5vZGUuZnVuYy5pbXBsZW1lbnRhdGlvbihjYWxsQXJndW1lbnRz
LCBub2RlKSk7CiAgICAgICAgIHJlc3VsdCA9IHRoaXMuX3NuYXBzaG90KG5vZGUuZnVuYy5yZXR1
cm5UeXBlLCBub2RlLnJlc3VsdEVQdHIsIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5q
cyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggNTU2Y2IyZmI4
YmI1MTA4NzkwYzViNGRhOGZhNjdlNGM1NGNhYzY2Ni4uOTMxMGQwMTk2NzYzNGI2ODA2OGExYjdk
NGEzOTY4MDUzNzQzZTY1MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvVGVzdC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBA
IC03NjI2LDYgKzc2MjYsNTkgQEAgdGVzdHMuY29tbWVudFBhcnNpbmcgPSBmdW5jdGlvbigpIHsK
ICAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXTGV4aWNhbEVycm9yKTsKIH0KIAordGVzdHMu
Y2FsbEFyZ3VtZW50c0FyZUNvcGllZEltbWVkaWF0ZWx5QWZ0ZXJFdmFsdWF0aW9uID0gKCkgPT4g
eworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50IGZvbygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiAqYmFyKDUpICsgKmJhcig3KTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRocmVhZCBpbnQqIGJhcihpbnQgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGludCB4ID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gJng7CisgICAgICAgIH0KKyAgICBg
KTsKKworICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwg
W10pLCAxMik7Cit9CisKK3Rlc3RzLmV2YWx1YXRpb25PcmRlckZvckFyZ3VtZW50cyA9ICgpID0+
IHsKKyAgICBjb25zdCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgaW50IGV2YWx1YXRpb25P
cmRlclVzZXJGdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBwbHVzKGJh
cig1KSwgYmFyKDcpKTsKKyAgICAgICAgfQorCisgICAgICAgIHRocmVhZCBpbnQqIGJhcihpbnQg
dmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCB4ID0gdmFsdWU7CisgICAgICAgICAg
ICByZXR1cm4gJng7CisgICAgICAgIH0KKworICAgICAgICBpbnQgcGx1cyh0aHJlYWQgaW50KiB4
LCB0aHJlYWQgaW50KiB5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gKnggKyAqeTsK
KyAgICAgICAgfQorCisgICAgICAgIGludCBldmFsdWF0aW9uT3JkZXJOYXRpdmVGdW5jdGlvbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCB4OworICAgICAgICAgICAgaW50IHkgPSBmdW5j
dGlvbldpdGhTaWRlRWZmZWN0KCZ4LCAyKSArIGZ1bmN0aW9uV2l0aFNpZGVFZmZlY3QoJnksIDMp
OworICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgIH0KKworICAgICAgICBpbnQgZnVuY3Rp
b25XaXRoU2lkZUVmZmVjdCh0aHJlYWQgaW50KiB4LCBpbnQgbmV3VmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgICp4ID0gbmV3VmFsdWU7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAg
ICAgfQorICAgIGApOworCisgICAgY2hlY2tJbnQocHJvZ3JhbSwgY2FsbEZ1bmN0aW9uKHByb2dy
YW0sICJldmFsdWF0aW9uT3JkZXJVc2VyRnVuY3Rpb24iLCBbXSksIDEwKTsKKyAgICBjaGVja0lu
dChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImV2YWx1YXRpb25PcmRlck5hdGl2ZUZ1
bmN0aW9uIiwgW10pLCAyKTsKK30KKwogb2tUb1Rlc3QgPSB0cnVlOwogCiBsZXQgdGVzdEZpbHRl
ciA9IC8uKi87IC8vIHJ1biBldmVyeXRoaW5nIGJ5IGRlZmF1bHQK
</data>

          </attachment>
      

    </bug>

</bugzilla>