<?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>99122</bug_id>
          
          <creation_ts>2012-10-11 17:40:16 -0700</creation_ts>
          <short_desc>LocalCurrentGraphicsContext will never restore the current context to null</short_desc>
          <delta_ts>2012-10-11 18:29:48 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>740470</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-11 17:40:16 -0700</bug_when>
    <thetext>In a WebKit2 world, at rest, we are in a state where NSGraphicsContext is null (because we have no NSWindow, NSViews, etc.)

LocalCurrentGraphicsContext is supposed to make temporary changes to the current Cocoa graphics context. However! It will not restore the current context to null, so you can end up with an unexpected context as the &quot;at rest&quot; context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740493</commentid>
    <comment_count>1</comment_count>
      <attachid>168327</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-11 18:21:44 -0700</bug_when>
    <thetext>Created attachment 168327
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740494</commentid>
    <comment_count>2</comment_count>
      <attachid>168327</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-11 18:22:59 -0700</bug_when>
    <thetext>Comment on attachment 168327
patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        LocalCurrentGraphicsContext is meant to cause temporary changes to
&gt; +        NSGraphicsContext&apos;s currentContext. However, if it is entered when
&gt; +        currentContext is null, it will not restore to null, as a null
&gt; +        m_savedNSGraphicsContext was being used to indicate that the current and
&gt; +        passed-in graphics contexts were equal (and thus no save/restore was required).

You should also mentiong flipping the order of the restores.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740497</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-11 18:29:48 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/131120</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168327</attachid>
            <date>2012-10-11 18:21:44 -0700</date>
            <delta_ts>2012-10-11 18:22:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>gc.diff</filename>
            <type>text/plain</type>
            <size>3359</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZjA0ZGEyLi4zNGVhMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTItMTAtMTEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHdpbGwgbmV2ZXIgcmVzdG9yZSB0
aGUgY3VycmVudCBjb250ZXh0IHRvIG51bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk5MTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGlzIG1lYW50IHRv
IGNhdXNlIHRlbXBvcmFyeSBjaGFuZ2VzIHRvCisgICAgICAgIE5TR3JhcGhpY3NDb250ZXh0J3Mg
Y3VycmVudENvbnRleHQuIEhvd2V2ZXIsIGlmIGl0IGlzIGVudGVyZWQgd2hlbgorICAgICAgICBj
dXJyZW50Q29udGV4dCBpcyBudWxsLCBpdCB3aWxsIG5vdCByZXN0b3JlIHRvIG51bGwsIGFzIGEg
bnVsbAorICAgICAgICBtX3NhdmVkTlNHcmFwaGljc0NvbnRleHQgd2FzIGJlaW5nIHVzZWQgdG8g
aW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCBhbmQKKyAgICAgICAgcGFzc2VkLWluIGdyYXBoaWNz
IGNvbnRleHRzIHdlcmUgZXF1YWwgKGFuZCB0aHVzIG5vIHNhdmUvcmVzdG9yZSB3YXMgcmVxdWly
ZWQpLgorCisgICAgICAgIEFkZCBhIHNlcGFyYXRlIGZsYWcgZm9yIHdoZXRoZXIgb3Igbm90IHdl
IG5lZWQgdG8gcmVzdG9yZSB0aGUgY29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9M
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCk6CisK
IDIwMTItMTAtMDcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTb3VwXSBDbGVhbiB1cCBSZXNvdXJjZUVycm9yIGNyZWF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggZDRkZjdlNi4uODI0ZjJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaApAQCAtMzks
NiArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCogbV9zYXZl
ZEdyYXBoaWNzQ29udGV4dDsKICAgICBOU0dyYXBoaWNzQ29udGV4dCogbV9zYXZlZE5TR3JhcGhp
Y3NDb250ZXh0OworICAgIGJvb2wgbV9kaWRTZXRHcmFwaGljc0NvbnRleHQ7CiAjaWYgVVNFKFNL
SUEpCiAgICAgZ2Z4OjpTa2lhQml0TG9ja2VyIG1fc2tpYUJpdExvY2tlcjsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQubW0KaW5kZXggNWYxZDA3Yy4uZjAzM2RmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
Lm1tCkBAIC0zMCw4ICszMCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0KQorICAgIDogbV9kaWRTZXRHcmFwaGljc0NvbnRleHQoZmFs
c2UpCiAjaWYgVVNFKFNLSUEpCi0gICAgOiBtX3NraWFCaXRMb2NrZXIoZ3JhcGhpY3NDb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCkpCisgICAgLCBtX3NraWFCaXRMb2NrZXIoZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCkpCiAjZW5kaWYKIHsKICAg
ICBtX3NhdmVkR3JhcGhpY3NDb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0OwpAQCAtNDIsMjAgKzQz
LDIxIEBAIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpCiAgICAgICAgIG1fc2F2ZWROU0dyYXBoaWNz
Q29udGV4dCA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBtX3NhdmVk
TlNHcmFwaGljc0NvbnRleHQgPSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBy
ZXRhaW5dOwogICAgIE5TR3JhcGhpY3NDb250ZXh0KiBuZXdDb250ZXh0ID0gW05TR3JhcGhpY3ND
b250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y2dDb250ZXh0IGZsaXBwZWQ6
WUVTXTsKICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bmV3Q29udGV4
dF07CisgICAgbV9kaWRTZXRHcmFwaGljc0NvbnRleHQgPSB0cnVlOwogfQogCiBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQ6On5Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKQogewotICAg
IG1fc2F2ZWRHcmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKLQotICAgIGlmIChtX3NhdmVkTlNH
cmFwaGljc0NvbnRleHQpIHsKKyAgICBpZiAobV9kaWRTZXRHcmFwaGljc0NvbnRleHQpIHsKICAg
ICAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om1fc2F2ZWROU0dyYXBo
aWNzQ29udGV4dF07CiAgICAgICAgIFttX3NhdmVkTlNHcmFwaGljc0NvbnRleHQgcmVsZWFzZV07
CiAgICAgfQorCisgICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogfQogCiBD
R0NvbnRleHRSZWYgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0OjpjZ0NvbnRleHQoKQo=
</data>
<flag name="review"
          id="181272"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>