<?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>16610</bug_id>
          
          <creation_ts>2007-12-26 07:20:59 -0800</creation_ts>
          <short_desc>&lt;canvas&gt; restore() removes path segments created before it</short_desc>
          <delta_ts>2008-03-07 21:59:51 -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>New Bugs</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilmari Heikkinen">ilmari.heikkinen</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>ian</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>65290</commentid>
    <comment_count>0</comment_count>
    <who name="Ilmari Heikkinen">ilmari.heikkinen</who>
    <bug_when>2007-12-26 07:20:59 -0800</bug_when>
    <thetext>A ctx.restore() removes the path segments created before it. This makes it difficult to create transformed paths using ctx.save(); create_path(); ctx.restore()

E.g. 
ctx.save(); 
  ctx.scale(0.5, 1); 
  ctx.arc(0,0,10,0,Math.PI*2,false); 
ctx.restore(); 
ctx.stroke(); 
draws nothing (instead of the expected ellipse.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65291</commentid>
    <comment_count>1</comment_count>
      <attachid>18116</attachid>
    <who name="Ilmari Heikkinen">ilmari.heikkinen</who>
    <bug_when>2007-12-26 07:21:52 -0800</bug_when>
    <thetext>Created attachment 18116
Testcase for beginPath(); save(); arc(); restore(); stroke()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72889</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-03-06 03:46:08 -0800</bug_when>
    <thetext>Hmm, technically this is an easy fix, but i find myself wondering wtf firefox is doing -- it is not mathematically correct and appears to be completely detached from reality :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72896</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-03-06 04:26:19 -0800</bug_when>
    <thetext>Erk, it would appear that firefox attempts to maintain the screen position and size of a path across save/restore boundaries.  In effect, firefox appears to be trying to make:
save();
translate(100,100);
rect(0,0,10,10);
restore()

produce the same thing as
translate(100,100);
rect(0,0,10,10);
translate(-100,-100);

In practice this means that we have to maintain the transform for each level of the state stack -- this makes me unhappy, and i feel is not spec behaviour.  My reading of the spec would indicate that the opera behaviour is correct -- after restore() drawing the path should result in a circle, whereas firefox produces an ellipse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72897</commentid>
    <comment_count>4</comment_count>
      <attachid>19567</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-03-06 04:30:29 -0800</bug_when>
    <thetext>Created attachment 19567
Patch to implement bizarre firefox behaviour

*sigh*  This is what would be necessary to match the firefox behaviour.  Matching Opera -- and thus being correct relative to html5 by my reading -- is a smaller and downright trivial patch, that would just mean removing all the state transform from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72982</commentid>
    <comment_count>5</comment_count>
      <attachid>19567</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-03-07 04:36:32 -0800</bug_when>
    <thetext>Comment on attachment 19567
Patch to implement bizarre firefox behaviour

Okay, i&apos;ve talked about this with Hixie.  It would appear that firefox behaviour is that expeted by the spec, which makes me cry.  Therefore i&apos;m marking the logic change of the patch for review.  I&apos;ll bang out tests and changelog tomorrow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73014</commentid>
    <comment_count>6</comment_count>
      <attachid>19567</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-03-07 12:00:10 -0800</bug_when>
    <thetext>Comment on attachment 19567
Patch to implement bizarre firefox behaviour

Looks fine, r=me.

But where are the new regression tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73068</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-03-07 21:59:51 -0800</bug_when>
    <thetext>Layout tests reviewed by Mark Rowe, landed r30891</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18116</attachid>
            <date>2007-12-26 07:21:52 -0800</date>
            <delta_ts>2007-12-26 07:21:52 -0800</delta_ts>
            <desc>Testcase for beginPath(); save(); arc(); restore(); stroke()</desc>
            <filename>pathCreationTest.html</filename>
            <type>text/html</type>
            <size>595</size>
            <attacher name="Ilmari Heikkinen">ilmari.heikkinen</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5PgpUaGlzIHNob3VsZCBkaXNwbGF5IGFuIHVuaWZvcm1seSBzdHJva2VkIGVs
bGlwc2Ugb24gdGhlIGxlZnQgYW5kIGEgbm9uLXVuaWZvcm1seSBzdHJva2VkIGVsbGlwc2Ugb24g
dGhlIHJpZ2h0Ljxicj4KPGNhbnZhcyBpZD0iYyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSI0MDAiPjwv
Y2FudmFzPgo8c2NyaXB0PgogIHZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2MnKQog
IHZhciBjdHggPSBjLmdldENvbnRleHQoJzJkJykKICBjdHguZmlsbFN0eWxlID0gJ2JsYWNrJwog
IGN0eC5saW5lV2lkdGggPSAxMAogIGN0eC50cmFuc2xhdGUoNTAsIDIwMCkKICBjdHguYmVnaW5Q
YXRoKCkKICBjdHguc2F2ZSgpCiAgICBjdHguc2NhbGUoMSwgNSkKICAgIGN0eC5hcmMoMCwwLCAy
NSwgMCwgTWF0aC5QSSoyLCBmYWxzZSkKICBjdHgucmVzdG9yZSgpCiAgY3R4LnN0cm9rZSgpCiAg
Y3R4LnRyYW5zbGF0ZSgxMDAsIDApCiAgY3R4LmJlZ2luUGF0aCgpCiAgY3R4LnNjYWxlKDEsIDUp
CiAgY3R4LmFyYygwLDAsIDI1LCAwLCBNYXRoLlBJKjIsIGZhbHNlKQogIGN0eC5zdHJva2UoKQo8
L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19567</attachid>
            <date>2008-03-06 04:30:29 -0800</date>
            <delta_ts>2008-03-07 12:00:10 -0800</delta_ts>
            <desc>Patch to implement bizarre firefox behaviour</desc>
            <filename>pathRestoreMatchingFirefox.patch</filename>
            <type>text/plain</type>
            <size>9336</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIv
V2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMjY1MDlhYy4u
NDZjYmJhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAg
LTEwNiw3ICsxMDYsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzdG9yZSgp
CiAgICAgQVNTRVJUKG1fc3RhdGVTdGFjay5zaXplKCkgPj0gMSk7CiAgICAgaWYgKG1fc3RhdGVT
dGFjay5zaXplKCkgPD0gMSkKICAgICAgICAgcmV0dXJuOworICAgIG1fcGF0aC50cmFuc2Zvcm0o
c3RhdGUoKS5tX3RyYW5zZm9ybSk7CiAgICAgbV9zdGF0ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAg
ICBtX3BhdGgudHJhbnNmb3JtKHN0YXRlKCkubV90cmFuc2Zvcm0uaW52ZXJzZSgpKTsKICAgICBH
cmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzAyLDcgKzMwNCw4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzY2FsZShmbG9hdCBzeCwgZmxvYXQgc3kpCiAgICAgaWYgKCFjKQogICAgICAgICByZXR1
cm47CiAgICAgYy0+c2NhbGUoRmxvYXRTaXplKHN4LCBzeSkpOwotICAgIHN0YXRlKCkubV9wYXRo
LnRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZSgxLjAvc3gsIDEuMC9zeSkpOworICAg
IHN0YXRlKCkubV90cmFuc2Zvcm0uc2NhbGUoc3gsIHN5KTsKKyAgICBtX3BhdGgudHJhbnNmb3Jt
KEFmZmluZVRyYW5zZm9ybSgpLnNjYWxlKDEuMC9zeCwgMS4wL3N5KSk7CiB9CiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpCkBAIC0z
MTEsNyArMzE0LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJvdGF0ZShmbG9h
dCBhbmdsZUluUmFkaWFucykKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKICAgICBjLT5y
b3RhdGUoYW5nbGVJblJhZGlhbnMpOwotICAgIHN0YXRlKCkubV9wYXRoLnRyYW5zZm9ybShBZmZp
bmVUcmFuc2Zvcm0oKS5yb3RhdGUoLWFuZ2xlSW5SYWRpYW5zIC8gcGlEb3VibGUgKiAxODAuMCkp
OworICAgIHN0YXRlKCkubV90cmFuc2Zvcm0ucm90YXRlKGFuZ2xlSW5SYWRpYW5zIC8gcGlEb3Vi
bGUgKiAxODAuMCk7CisgICAgbV9wYXRoLnRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0oKS5yb3Rh
dGUoLWFuZ2xlSW5SYWRpYW5zIC8gcGlEb3VibGUgKiAxODAuMCkpOwogfQogCiB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSkKQEAgLTMy
MCw3ICszMjQsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNsYXRlKGZs
b2F0IHR4LCBmbG9hdCB0eSkKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKICAgICBjLT50
cmFuc2xhdGUodHgsIHR5KTsKLSAgICBzdGF0ZSgpLm1fcGF0aC50cmFuc2Zvcm0oQWZmaW5lVHJh
bnNmb3JtKCkudHJhbnNsYXRlKC10eCwgLXR5KSk7CisgICAgc3RhdGUoKS5tX3RyYW5zZm9ybS50
cmFuc2xhdGUodHgsIHR5KTsKKyAgICBtX3BhdGgudHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSgp
LnRyYW5zbGF0ZSgtdHgsIC10eSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6dHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsb2F0IG0yMiwg
ZmxvYXQgZHgsIGZsb2F0IGR5KQpAQCAtMzM1LDcgKzM0MCw4IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjp0cmFuc2Zvcm0oZmxvYXQgbTExLCBmbG9hdCBtMTIsIGZsb2F0IG0yMSwg
ZmxvYXQKICAgICAgICAgcmV0dXJuOwogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0obTEx
LCBtMTIsIG0yMSwgbTIyLCBkeCwgZHkpOwogICAgIGMtPmNvbmNhdENUTSh0cmFuc2Zvcm0pOwot
ICAgIHN0YXRlKCkubV9wYXRoLnRyYW5zZm9ybSh0cmFuc2Zvcm0uaW52ZXJzZSgpKTsKKyAgICBz
dGF0ZSgpLm1fdHJhbnNmb3JtLm11bHRpcGx5KHRyYW5zZm9ybSk7CisgICAgbV9wYXRoLnRyYW5z
Zm9ybSh0cmFuc2Zvcm0uaW52ZXJzZSgpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCkBAIC00MDAsMzIgKzQw
NiwzMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGZsb2F0
IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpiZWdpblBhdGgoKQogewotICAgIHN0YXRlKCkubV9wYXRoLmNsZWFyKCk7CisgICAg
bV9wYXRoLmNsZWFyKCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbG9z
ZVBhdGgoKQogewotICAgIHN0YXRlKCkubV9wYXRoLmNsb3NlU3VicGF0aCgpOworICAgIG1fcGF0
aC5jbG9zZVN1YnBhdGgoKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1v
dmVUbyhmbG9hdCB4LCBmbG9hdCB5KQogewotICAgIHN0YXRlKCkubV9wYXRoLm1vdmVUbyhGbG9h
dFBvaW50KHgsIHkpKTsKKyAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoeCwgeSkpOwogfQog
CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6bGluZVRvKGZsb2F0IHgsIGZsb2F0IHkp
CiB7Ci0gICAgc3RhdGUoKS5tX3BhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCwgeSkpOworICAg
IG1fcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludCh4LCB5KSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpxdWFkcmF0aWNDdXJ2ZVRvKGZsb2F0IGNweCwgZmxvYXQgY3B5LCBm
bG9hdCB4LCBmbG9hdCB5KQogewotICAgIHN0YXRlKCkubV9wYXRoLmFkZFF1YWRDdXJ2ZVRvKEZs
b2F0UG9pbnQoY3B4LCBjcHkpLCBGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBtX3BhdGguYWRkUXVh
ZEN1cnZlVG8oRmxvYXRQb2ludChjcHgsIGNweSksIEZsb2F0UG9pbnQoeCwgeSkpOwogfQogCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YmV6aWVyQ3VydmVUbyhmbG9hdCBjcDF4LCBm
bG9hdCBjcDF5LCBmbG9hdCBjcDJ4LCBmbG9hdCBjcDJ5LCBmbG9hdCB4LCBmbG9hdCB5KQogewot
ICAgIHN0YXRlKCkubV9wYXRoLmFkZEJlemllckN1cnZlVG8oRmxvYXRQb2ludChjcDF4LCBjcDF5
KSwgRmxvYXRQb2ludChjcDJ4LCBjcDJ5KSwgRmxvYXRQb2ludCh4LCB5KSk7CisgICAgbV9wYXRo
LmFkZEJlemllckN1cnZlVG8oRmxvYXRQb2ludChjcDF4LCBjcDF5KSwgRmxvYXRQb2ludChjcDJ4
LCBjcDJ5KSwgRmxvYXRQb2ludCh4LCB5KSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjphcmNUbyhmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxv
YXQgciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00MzUsNyArNDQxLDcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmFyY1RvKGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZs
b2F0IHkxLCBmbG8KICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBzdGF0ZSgpLm1fcGF0aC5hZGRBcmNUbyhGbG9hdFBvaW50KHgwLCB5MCks
IEZsb2F0UG9pbnQoeDEsIHkxKSwgcik7CisgICAgbV9wYXRoLmFkZEFyY1RvKEZsb2F0UG9pbnQo
eDAsIHkwKSwgRmxvYXRQb2ludCh4MSwgeTEpLCByKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmFyYyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByLCBmbG9hdCBzYSwgZmxv
YXQgZWEsIGJvb2wgYW50aWNsb2Nrd2lzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00NDUsNyAr
NDUxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFyYyhmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCByLCBmbG9hdCBzYSwgZmxvYXQgZWEKICAgICAgICAgZWMgPSBJTkRFWF9TSVpF
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzdGF0ZSgpLm1fcGF0aC5hZGRBcmMo
RmxvYXRQb2ludCh4LCB5KSwgciwgc2EsIGVhLCBhbnRpY2xvY2t3aXNlKTsKKyAgICBtX3BhdGgu
YWRkQXJjKEZsb2F0UG9pbnQoeCwgeSksIHIsIHNhLCBlYSwgYW50aWNsb2Nrd2lzZSk7CiB9CiAK
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDU1LDcgKzQ2
MSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZWN0KGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsCiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc3RhdGUoKS5tX3BhdGguYWRkUmVjdChG
bG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIG1fcGF0aC5hZGRSZWN0KEZsb2F0
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpjbGVhclBhdGhGb3JEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkK
QEAgLTQ2Myw3ICs0NjksNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJQ
YXRoRm9yRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpCiAgICAgaWYgKG1fY2Fu
dmFzKQogICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gbV9jYW52YXMtPmRvY3VtZW50
KCktPnNldHRpbmdzKCkpCiAgICAgICAgICAgICBpZiAoc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRC
YWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAgICAgICAgc3RhdGUoKS5tX3Bh
dGguY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBtX3BhdGguY2xlYXIoKTsKIH0KIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoKQpAQCAtNDczLDkgKzQ3OSw5IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Yy0+YmVnaW5QYXRoKCk7Ci0gICAgYy0+YWRkUGF0aChzdGF0ZSgpLm1fcGF0aCk7Ci0gICAgaWYg
KCFzdGF0ZSgpLm1fcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHdpbGxEcmF3KHN0YXRlKCkubV9w
YXRoLmJvdW5kaW5nUmVjdCgpKTsKKyAgICBjLT5hZGRQYXRoKG1fcGF0aCk7CisgICAgaWYgKCFt
X3BhdGguaXNFbXB0eSgpKQorICAgICAgICB3aWxsRHJhdyhtX3BhdGguYm91bmRpbmdSZWN0KCkp
OwogCiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUtPmdyYWRp
ZW50KCkpIHsKQEAgLTQ5MCw3ICs0OTYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZmlsbCgpCiAgICAgICAgIENHQ29udGV4dEZpbGxQYXRoKGMtPnBsYXRmb3JtQ29udGV4dCgp
KTsKICAgICB9CiAjZWxpZiBQTEFURk9STShRVCkKLSAgICBRUGFpbnRlclBhdGgqIHBhdGggPSBz
dGF0ZSgpLm1fcGF0aC5wbGF0Zm9ybVBhdGgoKTsKKyAgICBRUGFpbnRlclBhdGgqIHBhdGggPSBt
X3BhdGgucGxhdGZvcm1QYXRoKCk7CiAgICAgUVBhaW50ZXIqIHAgPSBzdGF0aWNfY2FzdDxRUGFp
bnRlcio+KGMtPnBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHls
ZS0+Z3JhZGllbnQoKSkgewogICAgICAgICBwLT5maWxsUGF0aCgqcGF0aCwgUUJydXNoKCooc3Rh
dGUoKS5tX2ZpbGxTdHlsZS0+Z3JhZGllbnQoKS0+cGxhdGZvcm1TaGFkaW5nKCkpKSk7CkBAIC01
MjMsMTMgKzUyOSwxMyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKCkK
ICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKICAgICBjLT5iZWdpblBhdGgoKTsKLSAgICBj
LT5hZGRQYXRoKHN0YXRlKCkubV9wYXRoKTsKKyAgICBjLT5hZGRQYXRoKG1fcGF0aCk7CiAKLSAg
ICBpZiAoIXN0YXRlKCkubV9wYXRoLmlzRW1wdHkoKSkgeworICAgIGlmICghbV9wYXRoLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbnN1ZmZpY2llbnQsIG5lZWQgdG8g
dXNlIENHQ29udGV4dFJlcGxhY2VQYXRoV2l0aFN0cm9rZWRQYXRoIHRvIGV4cGFuZCB0byByZXF1
aXJlZCBib3VuZHMKICAgICAgICAgZmxvYXQgbGluZVdpZHRoID0gc3RhdGUoKS5tX2xpbmVXaWR0
aDsKICAgICAgICAgZmxvYXQgaW5zZXQgPSBsaW5lV2lkdGggLyAyOwotICAgICAgICBGbG9hdFJl
Y3QgYm91bmRpbmdSZWN0ID0gc3RhdGUoKS5tX3BhdGguYm91bmRpbmdSZWN0KCk7CisgICAgICAg
IEZsb2F0UmVjdCBib3VuZGluZ1JlY3QgPSBtX3BhdGguYm91bmRpbmdSZWN0KCk7CiAgICAgICAg
IGJvdW5kaW5nUmVjdC5pbmZsYXRlKGluc2V0KTsKICAgICAgICAgd2lsbERyYXcoYm91bmRpbmdS
ZWN0KTsKICAgICB9CkBAIC01NDksNyArNTU1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnN0cm9rZSgpCiAgICAgICAgIENHQ29udGV4dFN0cm9rZVBhdGgoYy0+cGxhdGZvcm1D
b250ZXh0KCkpOwogICAgIH0KICNlbGlmIFBMQVRGT1JNKFFUKQotICAgIFFQYWludGVyUGF0aCog
cGF0aCA9IHN0YXRlKCkubV9wYXRoLnBsYXRmb3JtUGF0aCgpOworICAgIFFQYWludGVyUGF0aCog
cGF0aCA9IG1fcGF0aC5wbGF0Zm9ybVBhdGgoKTsKICAgICBRUGFpbnRlciogcCA9IHN0YXRpY19j
YXN0PFFQYWludGVyKj4oYy0+cGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGlmIChzdGF0ZSgpLm1f
c3Ryb2tlU3R5bGUtPmdyYWRpZW50KCkpIHsKICAgICAgICAgcC0+c2F2ZSgpOwpAQCAtNTY2LDEy
ICs1NzIsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZSgpCiAgICAg
Y2Fpcm9fc2F2ZShjcik7CiAgICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS0+Z3JhZGllbnQo
KSkgewogICAgICAgICBjYWlyb19zZXRfc291cmNlKGNyLCBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUt
PmdyYWRpZW50KCktPnBsYXRmb3JtU2hhZGluZygpKTsKLSAgICAgICAgYy0+YWRkUGF0aChzdGF0
ZSgpLm1fcGF0aCk7CisgICAgICAgIGMtPmFkZFBhdGgobV9wYXRoKTsKICAgICAgICAgY2Fpcm9f
c3Ryb2tlKGNyKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0
eWxlLT5wYXR0ZXJuKCkpCiAgICAgICAgICAgICBhcHBseVN0cm9rZVBhdHRlcm4oKTsKLSAgICAg
ICAgYy0+YWRkUGF0aChzdGF0ZSgpLm1fcGF0aCk7CisgICAgICAgIGMtPmFkZFBhdGgobV9wYXRo
KTsKICAgICAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKICAgICB9CiAgICAgY2Fpcm9fcmVzdG9yZShj
cik7CkBAIC01ODUsNyArNTkxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNs
aXAoKQogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYg
KCFjKQogICAgICAgICByZXR1cm47Ci0gICAgYy0+Y2xpcChzdGF0ZSgpLm1fcGF0aCk7CisgICAg
Yy0+Y2xpcChtX3BhdGgpOwogICAgIGNsZWFyUGF0aEZvckRhc2hib2FyZEJhY2t3YXJkQ29tcGF0
aWJpbGl0eU1vZGUoKTsKIH0KIApAQCAtNjAxLDcgKzYwNyw3IEBAIGJvb2wgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZsb2F0IHkp
CiAgICAgaWYgKCFjdG0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBjdG0uaW52ZXJzZSgpLm1hcFBvaW50KHBv
aW50KTsKLSAgICByZXR1cm4gc3RhdGUoKS5tX3BhdGguY29udGFpbnModHJhbnNmb3JtZWRQb2lu
dCk7CisgICAgcmV0dXJuIG1fcGF0aC5jb250YWlucyh0cmFuc2Zvcm1lZFBvaW50KTsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyUmVjdChmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRt
bC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA1Zjc5ZDUzLi5hMjg1ZTg5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvV2Vi
Q29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRF9oCiAjZGVmaW5lIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRF9oCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJG
bG9hdFNpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiUGF0aC5o
IgpAQCAtMTc4LDcgKzE3OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAgICAg
UmVmUHRyPENhbnZhc1N0eWxlPiBtX3N0cm9rZVN0eWxlOwogICAgICAgICAgICAgUmVmUHRyPENh
bnZhc1N0eWxlPiBtX2ZpbGxTdHlsZTsKLSAgICAgICAgICAgIFBhdGggbV9wYXRoOwogICAgICAg
ICAgICAgZmxvYXQgbV9saW5lV2lkdGg7CiAgICAgICAgICAgICBMaW5lQ2FwIG1fbGluZUNhcDsK
ICAgICAgICAgICAgIExpbmVKb2luIG1fbGluZUpvaW47CkBAIC0xOTAsMTEgKzE5MCwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBtX2dsb2Jh
bENvbXBvc2l0ZTsKICAgICAgICAgICAgIGJvb2wgbV9hcHBsaWVkU3Ryb2tlUGF0dGVybjsKICAg
ICAgICAgICAgIGJvb2wgbV9hcHBsaWVkRmlsbFBhdHRlcm47CisgICAgICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gbV90cmFuc2Zvcm07CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgICAgICBDR0Fm
ZmluZVRyYW5zZm9ybSBtX3N0cm9rZVN0eWxlUGF0dGVyblRyYW5zZm9ybTsKICAgICAgICAgICAg
IENHQWZmaW5lVHJhbnNmb3JtIG1fZmlsbFN0eWxlUGF0dGVyblRyYW5zZm9ybTsKICNlbmRpZgog
ICAgICAgICB9OworICAgICAgICBQYXRoIG1fcGF0aDsKIAogICAgICAgICBTdGF0ZSYgc3RhdGUo
KSB7IHJldHVybiBtX3N0YXRlU3RhY2subGFzdCgpOyB9CiAgICAgICAgIGNvbnN0IFN0YXRlJiBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7IH0K
</data>
<flag name="review"
          id="8565"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>