<?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>35544</bug_id>
          
          <creation_ts>2010-03-01 14:03:51 -0800</creation_ts>
          <short_desc>[OpenVG] Use masks to implement non-rectilinear clipping</short_desc>
          <delta_ts>2010-03-12 23:02:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33987</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>krit</cc>
    
    <cc>mario.bensi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194811</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-03-01 14:03:51 -0800</bug_when>
    <thetext>Rectilinear regions (a.k.a. upright rectangles) can be clipped in OpenVG using its scissoring functionality. For all other shapes (i.e. paths and rotated rectangles), we want mask clipping instead. Only OpenVG &gt;= 1.1 provides the required functions for managing masks, so all the masking code in this patch is put into an #ifdef.

Mask layers (which are bitmaps of 1 or 8 bit depth per pixel) are a bit hairy because, unlike the other state that we&apos;re keeping track of, they can&apos;t easily be captured like colors, boolean enable-blah values, or stuff. Also, OpenVG implementations can optimize on the plain bitmap concept by storing masks and mask layers as set of paths. So we don&apos;t really want to read out mask layers in memory for context state storage, we keep them as native VGMaskLayer. That requires us to make sure the correct surface is current when the painter state is stored (which we didn&apos;t ensure before) so a bit of surface management code is added here as well.

vgRenderToMask() is affected by the current OpenVG path transformation, so we don&apos;t have to manually transform the path like we do for scissor rectangles. PainterOpenVG restricts the clipping modes to Intersect and Subtract, because additive clipping a.k.a. removing clip regions would require too much (and unnecessary) overhead for scissor rectangles which would need to be &quot;unclipped&quot; as well. Right now PainterOpenVG can only add clips but never remove them (except with restore()), and that&apos;s in line with GraphicsContext&apos;s functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194812</commentid>
    <comment_count>1</comment_count>
      <attachid>49749</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-03-01 14:05:54 -0800</bug_when>
    <thetext>Created attachment 49749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197683</commentid>
    <comment_count>2</comment_count>
      <attachid>49749</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-03-09 11:21:27 -0800</bug_when>
    <thetext>Comment on attachment 49749
Patch

lgtm r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199147</commentid>
    <comment_count>3</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2010-03-12 11:25:49 -0800</bug_when>
    <thetext>Committed r55922: &lt;http://trac.webkit.org/changeset/55922&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199279</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-12 18:17:29 -0800</bug_when>
    <thetext>This appears to have broken the Gtk build:
http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/3889</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199303</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-03-12 22:35:59 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; This appears to have broken the Gtk build:
&gt; http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/3889

How? There is no core code touched and also no Gtk code. Only files in the openvg folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199310</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-03-12 23:02:27 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; This appears to have broken the Gtk build:
&gt; http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/3889

http://trac.webkit.org/changeset/55927 broke the gtk bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49749</attachid>
            <date>2010-03-01 14:05:54 -0800</date>
            <delta_ts>2010-03-09 11:21:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35544-20100301170553.patch</filename>
            <type>text/plain</type>
            <size>13766</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzMwMDgxYS4uZjdhM2U3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MyBAQAogMjAxMC0wMy0wMSAgSmFrb2IgUGV0c292
aXRzICA8anBldHNvdml0c0ByaW0uY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtPcGVuVkddIFVzZSBtYXNrcyB0byBpbXBsZW1lbnQgbm9uLXJl
Y3RpbGluZWFyIGNsaXBwaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzU1NDQKKworICAgICAgICBSZXF1aXJlcyBzb21lIGFkZGl0aW9uYWwgY29u
dGV4dCBzd2l0Y2hpbmcgbG9naWMgdG8KKyAgICAgICAgbWFrZSBzdXJlIHRoZSByaWdodCBjb250
ZXh0IGlzIGN1cnJlbnQgd2hlbiBkZWFsaW5nCisgICAgICAgIHdpdGggdGhlIG1hc2ssIGJlY2F1
c2Ugd2UgZG9uJ3Qgc3RvcmUgaXQgYnkgb3Vyc2VsdmVzLgorCisgICAgICAgIEluaXRpYWwgdmVy
c2lvbiBvZiB0aGlzIGNvZGUgd2FzIHdyaXR0ZW4gYnkKKyAgICAgICAgRWxpIEZpZGxlciA8ZWZp
ZGxlckByaW0uY29tPiwgSSBkaWQgYSBjb3VwbGUgb2YKKyAgICAgICAgYnVnIGZpeGVzIGFuZCBl
ZmZpY2llbmN5IGltcHJvdmVtZW50cyBzaW5jZSB0aGVuLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Y2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNs
aXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0RWxsaXBz
ZUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91
bmRlZFJlY3RDbGlwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFpbnRl
ck9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhaW50ZXJTdGF0ZTo6UGxh
dGZvcm1QYWludGVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYWludGVyU3Rh
dGU6On5QbGF0Zm9ybVBhaW50ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
aW50ZXJTdGF0ZTo6bWFza2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YWludGVyU3RhdGU6OmFwcGx5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYWlu
dGVyU3RhdGU6OnNhdmVNYXNrSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRl
ck9wZW5WRzo6aW50ZXJzZWN0Q2xpcFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9w
ZW5WRzo6Y2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9wZW5WRzo6c2F2ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhaW50ZXJPcGVuVkc6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnZnL1N1cmZhY2VPcGVuVkcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VyZmFj
ZU9wZW5WRzo6bWFrZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VyZmFjZU9wZW5WRzo6
bWFrZUNvbXBhdGlibGVDdXJyZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dmcvU3VyZmFjZU9wZW5WRy5oOgorICAgICAgICAoV2ViQ29yZTo6U3VyZmFjZU9wZW5WRzo6KToK
KworMjAxMC0wMy0wMSAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgorCiAg
ICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KIAogICAgICAgICBbT3BlblZHXSBJbXBs
ZW1lbnQgc3VwcG9ydCBmb3IgcGF0aHMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnZnL0dyYXBoaWNzQ29udGV4dE9wZW5WRy5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcuY3BwCmluZGV4IDM5N2Q3OTIu
LjU0Y2M3ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0dy
YXBoaWNzQ29udGV4dE9wZW5WRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudmcvR3JhcGhpY3NDb250ZXh0T3BlblZHLmNwcApAQCAtMjI2LDggKzIyNiw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIFVOVVNFRF9QQVJBTShjbGlwUnVsZSk7CisgICAgbV9kYXRhLT5jbGlwUGF0aCgqKG1f
ZGF0YS0+Y3VycmVudFBhdGgoKSksIFBhaW50ZXJPcGVuVkc6OkludGVyc2VjdENsaXAsIGNsaXBS
dWxlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYg
Y29sb3IpCkBAIC00MTMsOCArNDEyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29u
c3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyAg
ICBtX2RhdGEtPmNsaXBQYXRoKHBhdGgsIFBhaW50ZXJPcGVuVkc6OkludGVyc2VjdENsaXAsIG1f
Y29tbW9uLT5zdGF0ZS5maWxsUnVsZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYW52
YXNDbGlwKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC00MjcsOCArNDI1LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFVO
VVNFRF9QQVJBTShwYXRoKTsKKyAgICBtX2RhdGEtPmNsaXBQYXRoKHBhdGgsIFBhaW50ZXJPcGVu
Vkc6OlN1YnRyYWN0Q2xpcCwgbV9jb21tb24tPnN0YXRlLmZpbGxSdWxlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVGYWN0b3JzKQpAQCAt
NDY5LDggKzQ2Niw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBVTlVTRURfUEFSQU0ocmVjdCk7CisgICAgUGF0
aCBwYXRoOworICAgIHBhdGguYWRkUmVjdChyZWN0KTsKKyAgICBtX2RhdGEtPmNsaXBQYXRoKHBh
dGgsIFBhaW50ZXJPcGVuVkc6OlN1YnRyYWN0Q2xpcCwgbV9jb21tb24tPnN0YXRlLmZpbGxSdWxl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRFbGxpcHNlSW5SZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCkBAIC00NzgsOCArNDc2LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBPdXRFbGxpcHNlSW5SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICBVTlVTRURfUEFSQU0ocmVjdCk7CisgICAgUGF0aCBwYXRoOworICAgIHBhdGguYWRkRWxs
aXBzZShyZWN0KTsKKyAgICBtX2RhdGEtPmNsaXBQYXRoKHBhdGgsIFBhaW50ZXJPcGVuVkc6OlN1
YnRyYWN0Q2xpcCwgbV9jb21tb24tPnN0YXRlLmZpbGxSdWxlKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQpAQCAtNDk3LDkgKzQ5NiwxMiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwg
aW50IHRoaWNrbmVzcwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgVU5VU0VEX1BBUkFNKHJlY3QpOwotICAg
IFVOVVNFRF9QQVJBTSh0aGlja25lc3MpOworICAgIFBhdGggcGF0aDsKKyAgICBwYXRoLmFkZEVs
bGlwc2UocmVjdCk7CisgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChyZWN0LngoKSArIHRo
aWNrbmVzcywgcmVjdC55KCkgKyB0aGlja25lc3MsCisgICAgICAgIHJlY3Qud2lkdGgoKSAtICh0
aGlja25lc3MgKiAyKSwgcmVjdC5oZWlnaHQoKSAtICh0aGlja25lc3MgKiAyKSkpOworCisgICAg
bV9kYXRhLT5jbGlwUGF0aChwYXRoLCBQYWludGVyT3BlblZHOjpJbnRlcnNlY3RDbGlwLCBtX2Nv
bW1vbi0+c3RhdGUuZmlsbFJ1bGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y29uY2F0
Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtYXRpb24pCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZHLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuY3BwCmluZGV4IGQyNDNj
NTcuLmRjZjg1ZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZn
L1BhaW50ZXJPcGVuVkcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZn
L1BhaW50ZXJPcGVuVkcuY3BwCkBAIC0xMDcsNiArMTA3LDEwIEBAIHN0cnVjdCBQbGF0Zm9ybVBh
aW50ZXJTdGF0ZSB7CiAKICAgICBib29sIHNjaXNzb3JpbmdFbmFibGVkOwogICAgIEZsb2F0UmVj
dCBzY2lzc29yUmVjdDsKKyNpZmRlZiBPUEVOVkdfVkVSU0lPTl8xXzEKKyAgICBib29sIG1hc2tp
bmdDaGFuZ2VkQW5kRW5hYmxlZDsKKyAgICBWR01hc2tMYXllciBtYXNrOworI2VuZGlmCiAKICAg
ICBDb2xvciBmaWxsQ29sb3I7CiAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7CkBAIC0xMjQs
NiArMTI4LDEwIEBAIHN0cnVjdCBQbGF0Zm9ybVBhaW50ZXJTdGF0ZSB7CiAgICAgICAgIDogY29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpCiAgICAgICAgICwgb3BhY2l0eSgx
LjApCiAgICAgICAgICwgc2Npc3NvcmluZ0VuYWJsZWQoZmFsc2UpCisjaWZkZWYgT1BFTlZHX1ZF
UlNJT05fMV8xCisgICAgICAgICwgbWFza2luZ0NoYW5nZWRBbmRFbmFibGVkKGZhbHNlKQorICAg
ICAgICAsIG1hc2soVkdfSU5WQUxJRF9IQU5ETEUpCisjZW5kaWYKICAgICAgICAgLCBmaWxsQ29s
b3IoQ29sb3I6OmJsYWNrKQogICAgICAgICAsIHN0cm9rZVN0eWxlKE5vU3Ryb2tlKQogICAgICAg
ICAsIHN0cm9rZVRoaWNrbmVzcygwLjApCkBAIC0xMzUsMTUgKzE0MywzNSBAQCBzdHJ1Y3QgUGxh
dGZvcm1QYWludGVyU3RhdGUgewogICAgIHsKICAgICB9CiAKKyAgICB+UGxhdGZvcm1QYWludGVy
U3RhdGUoKQorICAgIHsKKyNpZmRlZiBPUEVOVkdfVkVSU0lPTl8xXzEKKyAgICAgICAgaWYgKG1h
c2tpbmdDaGFuZ2VkQW5kRW5hYmxlZCAmJiBtYXNrICE9IFZHX0lOVkFMSURfSEFORExFKSB7Cisg
ICAgICAgICAgICB2Z0Rlc3Ryb3lNYXNrTGF5ZXIobWFzayk7CisgICAgICAgICAgICBBU1NFUlRf
VkdfTk9fRVJST1IoKTsKKyAgICAgICAgICAgIG1hc2sgPSBWR19JTlZBTElEX0hBTkRMRTsKKyAg
ICAgICAgfQorI2VuZGlmCisgICAgfQorCiAgICAgUGxhdGZvcm1QYWludGVyU3RhdGUoY29uc3Qg
UGxhdGZvcm1QYWludGVyU3RhdGUmIHN0YXRlKQogICAgIHsKICAgICAgICAgc3VyZmFjZVRyYW5z
Zm9ybWF0aW9uID0gc3RhdGUuc3VyZmFjZVRyYW5zZm9ybWF0aW9uOwogCiAgICAgICAgIHNjaXNz
b3JpbmdFbmFibGVkID0gc3RhdGUuc2Npc3NvcmluZ0VuYWJsZWQ7CiAgICAgICAgIHNjaXNzb3JS
ZWN0ID0gc3RhdGUuc2Npc3NvclJlY3Q7CisjaWZkZWYgT1BFTlZHX1ZFUlNJT05fMV8xCisgICAg
ICAgIG1hc2tpbmdDaGFuZ2VkQW5kRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBtYXNrID0gc3Rh
dGUubWFzazsKKyNlbmRpZgogICAgICAgICBjb3B5UGFpbnRTdGF0ZSgmc3RhdGUpOwogICAgIH0K
IAorICAgIGlubGluZSBib29sIG1hc2tpbmdFbmFibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtYXNraW5nQ2hhbmdlZEFuZEVuYWJsZWQgfHwgbWFzayAhPSBWR19JTlZBTElEX0hBTkRMRTsK
KyAgICB9CisKICAgICB2b2lkIGNvcHlQYWludFN0YXRlKGNvbnN0IFBsYXRmb3JtUGFpbnRlclN0
YXRlKiBvdGhlcikKICAgICB7CiAgICAgICAgIGNvbXBvc2l0ZU9wZXJhdGlvbiA9IG90aGVyLT5j
b21wb3NpdGVPcGVyYXRpb247CkBAIC0xODQsNiArMjEyLDE2IEBAIHN0cnVjdCBQbGF0Zm9ybVBh
aW50ZXJTdGF0ZSB7CiAKICAgICAgICAgYXBwbHlUcmFuc2Zvcm1hdGlvbihwYWludGVyKTsKICAg
ICAgICAgYXBwbHlTY2lzc29yUmVjdCgpOworCisjaWZkZWYgT1BFTlZHX1ZFUlNJT05fMV8xCisg
ICAgICAgIGlmIChtYXNraW5nRW5hYmxlZCgpKSB7CisgICAgICAgICAgICB2Z1NldGkoVkdfTUFT
S0lORywgVkdfVFJVRSk7CisgICAgICAgICAgICBpZiAobWFzayAhPSBWR19JTlZBTElEX0hBTkRM
RSkKKyAgICAgICAgICAgICAgICB2Z01hc2sobWFzaywgVkdfU0VUX01BU0ssIDAsIDAsIHBhaW50
ZXItPnN1cmZhY2UoKS0+d2lkdGgoKSwgcGFpbnRlci0+c3VyZmFjZSgpLT5oZWlnaHQoKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdmdTZXRpKFZHX01BU0tJTkcsIFZHX0ZBTFNFKTsK
KyNlbmRpZgorICAgICAgICBBU1NFUlRfVkdfTk9fRVJST1IoKTsKICAgICB9CiAKICAgICB2b2lk
IGFwcGx5QmxlbmRpbmcoUGFpbnRlck9wZW5WRyogcGFpbnRlcikKQEAgLTMzNSw2ICszNzMsMjIg
QEAgc3RydWN0IFBsYXRmb3JtUGFpbnRlclN0YXRlIHsKICAgICB7CiAgICAgICAgIHJldHVybiAo
Y29tcG9zaXRlT3BlcmF0aW9uID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgIWZpbGxDb2xvci5h
bHBoYSgpKTsKICAgICB9CisKKyAgICB2b2lkIHNhdmVNYXNrSWZOZWNlc3NhcnkoUGFpbnRlck9w
ZW5WRyogcGFpbnRlcikKKyAgICB7CisjaWZkZWYgT1BFTlZHX1ZFUlNJT05fMV8xCisgICAgICAg
IGlmIChtYXNraW5nQ2hhbmdlZEFuZEVuYWJsZWQpIHsKKyAgICAgICAgICAgIGlmIChtYXNrICE9
IFZHX0lOVkFMSURfSEFORExFKSB7CisgICAgICAgICAgICAgICAgdmdEZXN0cm95TWFza0xheWVy
KG1hc2spOworICAgICAgICAgICAgICAgIEFTU0VSVF9WR19OT19FUlJPUigpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbWFzayA9IHZnQ3JlYXRlTWFza0xheWVyKHBhaW50ZXItPnN1cmZh
Y2UoKS0+d2lkdGgoKSwgcGFpbnRlci0+c3VyZmFjZSgpLT5oZWlnaHQoKSk7CisgICAgICAgICAg
ICBBU1NFUlQobWFzayAhPSBWR19JTlZBTElEX0hBTkRMRSk7CisgICAgICAgICAgICB2Z0NvcHlN
YXNrKG1hc2ssIDAsIDAsIDAsIDAsIHBhaW50ZXItPnN1cmZhY2UoKS0+d2lkdGgoKSwgcGFpbnRl
ci0+c3VyZmFjZSgpLT5oZWlnaHQoKSk7CisgICAgICAgICAgICBBU1NFUlRfVkdfTk9fRVJST1Io
KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQogfTsKIAogCkBAIC03MzAsOSArNzg0LDQzIEBA
IHZvaWQgUGFpbnRlck9wZW5WRzo6aW50ZXJzZWN0Q2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgICAgICBpbnRlcnNlY3RTY2lzc29yUmVjdChlZmZlY3RpdmVTY2lzc29yUXVhZC5i
b3VuZGluZ0JveCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gVGhlIHRyYW5zZm9ybWVkIHNj
aXNzb3JSZWN0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBhcyBGbG9hdFJlY3QKLSAgICAgICAgLy8g
YW55bW9yZSwgc28gd2UgbmVlZCB0byBwZXJmb3JtIG1hc2tpbmcgaW5zdGVhZC4gTm90IHlldCBp
bXBsZW1lbnRlZC4KLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgLy8gYW55bW9y
ZSwgc28gd2UgbmVlZCB0byBwZXJmb3JtIG1hc2tpbmcgaW5zdGVhZC4KKyAgICAgICAgUGF0aCBz
Y2lzc29yUmVjdFBhdGg7CisgICAgICAgIHNjaXNzb3JSZWN0UGF0aC5hZGRSZWN0KHJlY3QpOwor
ICAgICAgICBjbGlwUGF0aChzY2lzc29yUmVjdFBhdGgsIFBhaW50ZXJPcGVuVkc6OkludGVyc2Vj
dENsaXApOworICAgIH0KK30KKwordm9pZCBQYWludGVyT3BlblZHOjpjbGlwUGF0aChjb25zdCBQ
YXRoJiBwYXRoLCBQYWludGVyT3BlblZHOjpDbGlwT3BlcmF0aW9uIG1hc2tPcCwgV2luZFJ1bGUg
Y2xpcFJ1bGUpCit7CisjaWZkZWYgT1BFTlZHX1ZFUlNJT05fMV8xCisgICAgQVNTRVJUKG1fc3Rh
dGUpOworICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQoKTsKKworICAgIGlmIChtX3N0YXRlLT5t
YXNrICE9IFZHX0lOVkFMSURfSEFORExFICYmICFtX3N0YXRlLT5tYXNraW5nQ2hhbmdlZEFuZEVu
YWJsZWQpIHsKKyAgICAgICAgLy8gVGhlIHBhcmVudCdzIG1hc2sgaGFzIGJlZW4gaW5oZXJpdGVk
IC0gZGlzcG9zZSB0aGUgaGFuZGxlIHNvIHRoYXQKKyAgICAgICAgLy8gaXQgd29uJ3QgYmUgb3Zl
cndyaXR0ZW4uCisgICAgICAgIG1fc3RhdGUtPm1hc2tpbmdDaGFuZ2VkQW5kRW5hYmxlZCA9IHRy
dWU7CisgICAgICAgIG1fc3RhdGUtPm1hc2sgPSBWR19JTlZBTElEX0hBTkRMRTsKKyAgICB9IGVs
c2UgaWYgKCFtX3N0YXRlLT5tYXNraW5nRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIE5vbmUgb2Yg
dGhlIHBhcmVudCBwYWludGVyIHN0YXRlcyBoYWQgYSBtYXNrIGVuYWJsZWQgeWV0LgorICAgICAg
ICBtX3N0YXRlLT5tYXNraW5nQ2hhbmdlZEFuZEVuYWJsZWQgPSB0cnVlOworICAgICAgICB2Z1Nl
dGkoVkdfTUFTS0lORywgVkdfVFJVRSk7CisgICAgICAgIC8vIE1ha2Ugc3VyZSBub3QgdG8gaW5o
ZXJpdCBwcmV2aW91cyBtYXNrIHN0YXRlIGZyb20gcHJldmlvdXNseSB3cml0dGVuCisgICAgICAg
IC8vIChidXQgZGlzYWJsZWQpIG1hc2tzLiBGb3IgVkdfRklMTF9NQVNLIHRoZSBmaXJzdCBhcmd1
bWVudCBpcyBpZ25vcmVkLAorICAgICAgICAvLyB3ZSBwYXNzIFZHX0lOVkFMSURfSEFORExFIHdo
aWNoIGlzIHdoYXQgdGhlIE9wZW5WRyBzcGVjIHN1Z2dlc3RzLgorICAgICAgICB2Z01hc2soVkdf
SU5WQUxJRF9IQU5ETEUsIFZHX0ZJTExfTUFTSywgMCwgMCwgbV9zdXJmYWNlLT53aWR0aCgpLCBt
X3N1cmZhY2UtPmhlaWdodCgpKTsKICAgICB9CisKKyAgICAvLyBJbnRlcnNlY3QgdGhlIHBhdGgg
ZnJvbSB0aGUgbWFzaywgb3Igc3VidHJhY3QgaXQgZnJvbSB0aGVyZS4KKyAgICAvLyAoSW4gZWl0
aGVyIGNhc2Ugd2UgYWx3YXlzIGRlY3JlYXNlIHRoZSB2aXNpYmxlIGFyZWEsIG5ldmVyIGluY3Jl
YXNlIGl0LAorICAgIC8vIHdoaWNoIG1lYW5zIG1hc2tpbmcgbmV2ZXIgaGFzIHRvIG1vZGlmeSBz
Y2lzc29yIHJlY3RhbmdsZXMuKQorICAgIHZnU2V0aShWR19GSUxMX1JVTEUsIHRvVkdGaWxsUnVs
ZShjbGlwUnVsZSkpOworICAgIHZnUmVuZGVyVG9NYXNrKHBhdGgucGxhdGZvcm1QYXRoKCktPnZn
UGF0aCgpLCBWR19GSUxMX1BBVEgsIChWR01hc2tPcGVyYXRpb24pIG1hc2tPcCk7CisgICAgQVNT
RVJUX1ZHX05PX0VSUk9SKCk7CisjZWxzZWlmCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFBhaW50ZXJPcGVuVkc6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgVkdiaXRmaWVsZCBzcGVjaWZpZWRQYWludE1vZGVzKQpAQCAtOTkzLDE1ICsxMDgxLDE4IEBA
IHZvaWQgUGFpbnRlck9wZW5WRzo6c2F2ZShQYWludGVyT3BlblZHOjpTYXZlTW9kZSBzYXZlTW9k
ZSkKICAgICBtX3N1cmZhY2UtPm1ha2VDdXJyZW50KFN1cmZhY2VPcGVuVkc6OkRvbnRTYXZlT3JB
cHBseVBhaW50ZXJTdGF0ZSk7CiAKICAgICBpZiAoc2F2ZU1vZGUgPT0gUGFpbnRlck9wZW5WRzo6
Q3JlYXRlTmV3U3RhdGUpIHsKKyAgICAgICAgbV9zdGF0ZS0+c2F2ZU1hc2tJZk5lY2Vzc2FyeSh0
aGlzKTsKICAgICAgICAgUGxhdGZvcm1QYWludGVyU3RhdGUqIHN0YXRlID0gbmV3IFBsYXRmb3Jt
UGFpbnRlclN0YXRlKCptX3N0YXRlKTsKICAgICAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChzdGF0
ZSk7CiAgICAgICAgIG1fc3RhdGUgPSBtX3N0YXRlU3RhY2subGFzdCgpOwotICAgIH0gZWxzZSB7
IC8vIGlmIChzYXZlTW9kZSA9PSBQYWludGVyT3BlblZHOjpDcmVhdGVOZXdTdGF0ZVdpdGhQYWlu
dFN0YXRlT25seSkgeworICAgIH0gZWxzZSBpZiAoc2F2ZU1vZGUgPT0gUGFpbnRlck9wZW5WRzo6
Q3JlYXRlTmV3U3RhdGVXaXRoUGFpbnRTdGF0ZU9ubHkpIHsKKyAgICAgICAgbV9zdGF0ZS0+c2F2
ZU1hc2tJZk5lY2Vzc2FyeSh0aGlzKTsKICAgICAgICAgUGxhdGZvcm1QYWludGVyU3RhdGUqIHN0
YXRlID0gbmV3IFBsYXRmb3JtUGFpbnRlclN0YXRlKCk7CiAgICAgICAgIHN0YXRlLT5jb3B5UGFp
bnRTdGF0ZShtX3N0YXRlKTsKICAgICAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZChzdGF0ZSk7CiAg
ICAgICAgIG1fc3RhdGUgPSBtX3N0YXRlU3RhY2subGFzdCgpOwotICAgIH0KKyAgICB9IGVsc2Ug
Ly8gaWYgKHNhdmVNb2RlID09IFBhaW50ZXJPcGVuVkc6OktlZXBDdXJyZW50U3RhdGUpCisgICAg
ICAgIG1fc3RhdGUtPnNhdmVNYXNrSWZOZWNlc3NhcnkodGhpcyk7CiB9CiAKIHZvaWQgUGFpbnRl
ck9wZW5WRzo6cmVzdG9yZSgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW52Zy9QYWludGVyT3BlblZHLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9QYWludGVyT3BlblZHLmgKaW5kZXggNjA3MWVlNy4uOGJkZDE2OSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFpbnRlck9wZW5WRy5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuaApAQCAtNDgsOCArNDgs
MTMgQEAgcHVibGljOgogCiAgICAgZW51bSBTYXZlTW9kZSB7CiAgICAgICAgIENyZWF0ZU5ld1N0
YXRlLAorICAgICAgICBLZWVwQ3VycmVudFN0YXRlLAogICAgICAgICBDcmVhdGVOZXdTdGF0ZVdp
dGhQYWludFN0YXRlT25seSAvLyBpbnRlcm5hbCB1c2FnZSBvbmx5LCBkbyBub3QgdXNlIG91dHNp
ZGUgUGFpbnRlck9wZW5WRwogICAgIH07CisgICAgZW51bSBDbGlwT3BlcmF0aW9uIHsKKyAgICAg
ICAgSW50ZXJzZWN0Q2xpcCA9IFZHX0lOVEVSU0VDVF9NQVNLLAorICAgICAgICBTdWJ0cmFjdENs
aXAgPSBWR19TVUJUUkFDVF9NQVNLCisgICAgfTsKIAogICAgIFBhaW50ZXJPcGVuVkcoKTsKICAg
ICBQYWludGVyT3BlblZHKFN1cmZhY2VPcGVuVkcqKTsKQEAgLTEwNSw2ICsxMTAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkcmF3UGF0aChWR2JpdGZpZWxkIHBhaW50TW9kZXMgPSAoVkdfU1RST0tF
X1BBVEggfCBWR19GSUxMX1BBVEgpLCBXaW5kUnVsZSBmaWxsUnVsZSA9IFJVTEVfTk9OWkVSTyk7
CiAKICAgICB2b2lkIGludGVyc2VjdENsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZv
aWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFBhaW50ZXJPcGVuVkc6OkNsaXBPcGVyYXRpb24sIFdp
bmRSdWxlIGNsaXBSdWxlID0gUlVMRV9OT05aRVJPKTsKIAogICAgIHZvaWQgc2F2ZShQYWludGVy
T3BlblZHOjpTYXZlTW9kZSBzYXZlTW9kZSA9IENyZWF0ZU5ld1N0YXRlKTsKICAgICB2b2lkIHJl
c3RvcmUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1N1
cmZhY2VPcGVuVkcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvU3VyZmFj
ZU9wZW5WRy5jcHAKaW5kZXggOTUzOWYyYy4uYmVjZTZiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvU3VyZmFjZU9wZW5WRy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvU3VyZmFjZU9wZW5WRy5jcHAKQEAgLTE3Myw2ICsxNzMs
MTEgQEAgdm9pZCBTdXJmYWNlT3BlblZHOjptYWtlQ3VycmVudChNYWtlQ3VycmVudE1vZGUgbW9k
ZSkKICAgICBBU1NFUlRfRUdMX05PX0VSUk9SKCk7CiAKICAgICBpZiAoY3VycmVudFN1cmZhY2Ug
IT0gbV9lZ2xTdXJmYWNlKSB7CisgICAgICAgIC8vIFNhdmUgb3RoZXIgY29udGV4dCBiZWZvcmUg
c3dpdGNoaW5nIG92ZXIuCisgICAgICAgIGlmIChzX2N1cnJlbnRQYWludGVyICYmIG1vZGUgIT0g
RG9udFNhdmVPckFwcGx5UGFpbnRlclN0YXRlCisgICAgICAgICAgICAmJiBzX2N1cnJlbnRQYWlu
dGVyLT5zdXJmYWNlKCktPm1fZWdsU3VyZmFjZSA9PSBjdXJyZW50U3VyZmFjZSkKKyAgICAgICAg
ICAgIHNfY3VycmVudFBhaW50ZXItPnNhdmUoUGFpbnRlck9wZW5WRzo6S2VlcEN1cnJlbnRTdGF0
ZSk7CisKICAgICAgICAgZWdsTWFrZUN1cnJlbnQobV9lZ2xEaXNwbGF5LCBtX2VnbFN1cmZhY2Us
IG1fZWdsU3VyZmFjZSwgbV9lZ2xDb250ZXh0KTsKICAgICAgICAgQVNTRVJUX0VHTF9OT19FUlJP
UigpOwogICAgICAgICBzX2N1cnJlbnRQYWludGVyID0gMDsKQEAgLTIwMiw2ICsyMDcsMTAgQEAg
dm9pZCBTdXJmYWNlT3BlblZHOjptYWtlQ29tcGF0aWJsZUN1cnJlbnQoKQogICAgICAgICAgICAg
c19jdXJyZW50UGFpbnRlciA9IG1fYWN0aXZlUGFpbnRlcjsKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoIUVHTERpc3BsYXlPcGVuVkc6OmZvckRpc3BsYXkobV9lZ2xEaXNwbGF5KS0+c3VyZmFj
ZXNDb21wYXRpYmxlKGN1cnJlbnRTdXJmYWNlLCBtX2VnbFN1cmZhY2UpKSB7CisgICAgICAgIC8v
IFNhdmUgb3RoZXIgY29udGV4dCBiZWZvcmUgc3dpdGNoaW5nIG92ZXIuCisgICAgICAgIGlmIChz
X2N1cnJlbnRQYWludGVyICYmIHNfY3VycmVudFBhaW50ZXItPnN1cmZhY2UoKS0+bV9lZ2xTdXJm
YWNlID09IGN1cnJlbnRTdXJmYWNlKQorICAgICAgICAgICAgc19jdXJyZW50UGFpbnRlci0+c2F2
ZShQYWludGVyT3BlblZHOjpLZWVwQ3VycmVudFN0YXRlKTsKKwogICAgICAgICBlZ2xNYWtlQ3Vy
cmVudChtX2VnbERpc3BsYXksIG1fZWdsU3VyZmFjZSwgbV9lZ2xTdXJmYWNlLCBtX2VnbENvbnRl
eHQpOwogICAgICAgICBBU1NFUlRfRUdMX05PX0VSUk9SKCk7CiAgICAgICAgIHNfY3VycmVudFBh
aW50ZXIgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcv
U3VyZmFjZU9wZW5WRy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvU3VyZmFj
ZU9wZW5WRy5oCmluZGV4IGRjMjg4ZGQuLmJlYjc2ODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1N1cmZhY2VPcGVuVkcuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW52Zy9TdXJmYWNlT3BlblZHLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVi
bGljOgogICAgIGVudW0gTWFrZUN1cnJlbnRNb2RlIHsKICAgICAgICAgQXBwbHlQYWludGVyU3Rh
dGVPblN1cmZhY2VTd2l0Y2gsCiAgICAgICAgIERvbnRBcHBseVBhaW50ZXJTdGF0ZSwKKyAgICAg
ICAgRG9udFNhdmVPckFwcGx5UGFpbnRlclN0YXRlCiAgICAgfTsKIAogICAgIHN0YXRpYyBTdXJm
YWNlT3BlblZHKiBjdXJyZW50U3VyZmFjZSgpOwo=
</data>
<flag name="review"
          id="32705"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>