<?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>106385</bug_id>
          
          <creation_ts>2013-01-08 14:50:04 -0800</creation_ts>
          <short_desc>CanvasRenderingContext2D::setFont argument may reference destroyed object</short_desc>
          <delta_ts>2013-01-08 18:31: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>New Bugs</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="Justin Novosad">junov</reporter>
          <assigned_to name="Justin Novosad">junov</assigned_to>
          <cc>darin</cc>
    
    <cc>inferno</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>802679</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2013-01-08 14:50:04 -0800</bug_when>
    <thetext>CanvasRenderingContext2D::setFont argument may reference destroyed object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802683</commentid>
    <comment_count>1</comment_count>
      <attachid>181773</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2013-01-08 14:53:33 -0800</bug_when>
    <thetext>Created attachment 181773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802700</commentid>
    <comment_count>2</comment_count>
      <attachid>181773</attachid>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2013-01-08 15:04:06 -0800</bug_when>
    <thetext>Comment on attachment 181773
Patch

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:2091
&gt; +    String newFontSafeCopy(newFont); // In case newFont is a ref to a string touched by realizeSaves

The comment could be improved like &quot;Create a string copy since newFont can be deleted inside realizeSaves.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802719</commentid>
    <comment_count>3</comment_count>
      <attachid>181773</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-08 15:19:01 -0800</bug_when>
    <thetext>Comment on attachment 181773
Patch

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

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:2093
&gt; +    modifiableState().m_unparsedFont = newFontSafeCopy;

If this was a RefPtr then we’d want to do a release here to avoid reference count churn.

Since it’s a String, we *could* avoid the churn by doing a swap here instead of assignment. But I’m thinking that’s too ugly for the tiny performance win.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:2379
&gt;      if (!state().m_realizedFont) {
&gt; -        // Create temporary string object to hold ref count in case
&gt; -        // state().m_unparsedFont in unreffed by call to realizeSaves in
&gt; -        // setFont.
&gt; -        String unparsedFont(state().m_unparsedFont);
&gt; -        setFont(unparsedFont);
&gt; +        setFont(state().m_unparsedFont);
&gt;      }

Should take out the braces here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802746</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2013-01-08 15:42:52 -0800</bug_when>
    <thetext>(In reply to comment #3)

&gt; Should take out the braces here too.

I wonder how come this passed the style check...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802752</commentid>
    <comment_count>5</comment_count>
      <attachid>181792</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2013-01-08 15:44:53 -0800</bug_when>
    <thetext>Created attachment 181792
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802876</commentid>
    <comment_count>6</comment_count>
      <attachid>181792</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 18:31:24 -0800</bug_when>
    <thetext>Comment on attachment 181792
Patch for landing

Clearing flags on attachment: 181792

Committed r139144: &lt;http://trac.webkit.org/changeset/139144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802877</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 18:31:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181773</attachid>
            <date>2013-01-08 14:53:33 -0800</date>
            <delta_ts>2013-01-08 15:44:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106385-20130108175037.patch</filename>
            <type>text/plain</type>
            <size>2327</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA5NWQ3YjZjMjkxNmU5
MTE4MmZlZDhiODgzYTNmNGFmMjM2ZTc3ZS4uNzRjMTc4ZDA1OWQ5MjIxY2Y4ZDgzMjQ5Y2UwNmYz
ODkwNjVjODA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTA4ICBKdXN0
aW4gTm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRGb250IGFyZ3VtZW50IG1heSByZWZlcmVuY2UgZGVzdHJveWVkIG9iamVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Mzg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOiBjb3ZlcmVkIGJ5IGZhc3QvY2FudmFzL2NhbnZhcy1tZWFzdXJlVGV4dC5odG1sCisK
KyAgICAgICAgVGhpcyBpcyBhIHJlLXdyaXRlIG9mIHIxMzg5OTQuICBGaXhpbmcgYnVnIGluIHNl
dEZvbnQgaW5zdGVhZCBvZgorICAgICAgICB3b3JrYXJvdW5kIGF0IGNhbGwgc2l0ZS4gCisKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YWNjZXNzRm9udCk6CisKIDIwMTMt
MDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEhlYXAt
dXNlLWFmdGVyLWZyZWUgaW4gYm9vbCBXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
U2VsZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA3ZGQwOTE2M2U1ODk5ZWIzMWQ2Mzc3YTZlZDEz
NDcwNjMwZDI4MTI1Li40ZjQzMTZlN2UwMTRiNjJjZTVmNGJkN2M2MmZhNzIwNzVlNjA4NWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKQEAgLTIwODgsOCArMjA4OCw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gVGhlIHBhcnNlIHN1Y2NlZWRlZC4KKyAgICBTdHJpbmcgbmV3Rm9udFNhZmVD
b3B5KG5ld0ZvbnQpOyAvLyBJbiBjYXNlIG5ld0ZvbnQgaXMgYSByZWYgdG8gYSBzdHJpbmcgdG91
Y2hlZCBieSByZWFsaXplU2F2ZXMKICAgICByZWFsaXplU2F2ZXMoKTsKLSAgICBtb2RpZmlhYmxl
U3RhdGUoKS5tX3VucGFyc2VkRm9udCA9IG5ld0ZvbnQ7CisgICAgbW9kaWZpYWJsZVN0YXRlKCku
bV91bnBhcnNlZEZvbnQgPSBuZXdGb250U2FmZUNvcHk7CiAKICAgICAvLyBNYXAgdGhlIDxjYW52
YXM+IGZvbnQgaW50byB0aGUgdGV4dCBzdHlsZS4gSWYgdGhlIGZvbnQgdXNlcyBrZXl3b3JkcyBs
aWtlIGxhcmdlci9zbWFsbGVyLCB0aGVzZSB3aWxsIHdvcmsKICAgICAvLyByZWxhdGl2ZSB0byB0
aGUgY2FudmFzLgpAQCAtMjM3NCwxMSArMjM3NSw3IEBAIGNvbnN0IEZvbnQmIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6YWNjZXNzRm9udCgpCiAgICAgY2FudmFzKCktPmRvY3VtZW50KCktPnVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIGlmICghc3RhdGUoKS5tX3JlYWxpemVkRm9udCkg
ewotICAgICAgICAvLyBDcmVhdGUgdGVtcG9yYXJ5IHN0cmluZyBvYmplY3QgdG8gaG9sZCByZWYg
Y291bnQgaW4gY2FzZQotICAgICAgICAvLyBzdGF0ZSgpLm1fdW5wYXJzZWRGb250IGluIHVucmVm
ZmVkIGJ5IGNhbGwgdG8gcmVhbGl6ZVNhdmVzIGluCi0gICAgICAgIC8vIHNldEZvbnQuCi0gICAg
ICAgIFN0cmluZyB1bnBhcnNlZEZvbnQoc3RhdGUoKS5tX3VucGFyc2VkRm9udCk7Ci0gICAgICAg
IHNldEZvbnQodW5wYXJzZWRGb250KTsKKyAgICAgICAgc2V0Rm9udChzdGF0ZSgpLm1fdW5wYXJz
ZWRGb250KTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlKCkubV9mb250OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181792</attachid>
            <date>2013-01-08 15:44:53 -0800</date>
            <delta_ts>2013-01-08 18:31:24 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106385-20130108184157.patch</filename>
            <type>text/plain</type>
            <size>2375</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA5NWQ3YjZjMjkxNmU5
MTE4MmZlZDhiODgzYTNmNGFmMjM2ZTc3ZS4uOGY5YjMwNjgxZWU4YmQ4NGE1ZWRkNDk2ZThkNjgz
YWJjYTEyN2UyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAxLTA4ICBKdXN0
aW4gTm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRGb250IGFyZ3VtZW50IG1heSByZWZlcmVuY2UgZGVzdHJveWVkIG9iamVj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Mzg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWJoaXNoZWsgQXJ5YS4KKworICAgICAgICBObyBuZXcg
dGVzdHM6IGNvdmVyZWQgYnkgZmFzdC9jYW52YXMvY2FudmFzLW1lYXN1cmVUZXh0Lmh0bWwKKwor
ICAgICAgICBUaGlzIGlzIGEgcmUtd3JpdGUgb2YgcjEzODk5NC4gIEZpeGluZyBidWcgaW4gc2V0
Rm9udCBpbnN0ZWFkIG9mCisgICAgICAgIHdvcmthcm91bmQgYXQgY2FsbCBzaXRlLiAKKworICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphY2Nlc3NGb250KToKKwogMjAxMy0w
MS0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSGVhcC11
c2UtYWZ0ZXItZnJlZSBpbiBib29sIFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVT
ZWxlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDdkZDA5MTYzZTU4OTllYjMxZDYzNzdhNmVkMTM0
NzA2MzBkMjgxMjUuLmE1ODk4NzFhNmUzZDk1MDdlNGU4ZDFmZTg1YTcwYTA4ZmY2YTU2ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcApAQCAtMjA4OCw4ICsyMDg4LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdGb250KQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUaGUgcGFyc2Ugc3VjY2VlZGVkLgorICAgIFN0cmluZyBuZXdGb250U2FmZUNv
cHkobmV3Rm9udCk7IC8vIENyZWF0ZSBhIHN0cmluZyBjb3B5IHNpbmNlIG5ld0ZvbnQgY2FuIGJl
IGRlbGV0ZWQgaW5zaWRlIHJlYWxpemVTYXZlcy4KICAgICByZWFsaXplU2F2ZXMoKTsKLSAgICBt
b2RpZmlhYmxlU3RhdGUoKS5tX3VucGFyc2VkRm9udCA9IG5ld0ZvbnQ7CisgICAgbW9kaWZpYWJs
ZVN0YXRlKCkubV91bnBhcnNlZEZvbnQgPSBuZXdGb250U2FmZUNvcHk7CiAKICAgICAvLyBNYXAg
dGhlIDxjYW52YXM+IGZvbnQgaW50byB0aGUgdGV4dCBzdHlsZS4gSWYgdGhlIGZvbnQgdXNlcyBr
ZXl3b3JkcyBsaWtlIGxhcmdlci9zbWFsbGVyLCB0aGVzZSB3aWxsIHdvcmsKICAgICAvLyByZWxh
dGl2ZSB0byB0aGUgY2FudmFzLgpAQCAtMjM3MywxMyArMjM3NCw4IEBAIGNvbnN0IEZvbnQmIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YWNjZXNzRm9udCgpCiB7CiAgICAgY2FudmFzKCktPmRv
Y3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAotICAgIGlmICghc3RhdGUoKS5tX3Jl
YWxpemVkRm9udCkgewotICAgICAgICAvLyBDcmVhdGUgdGVtcG9yYXJ5IHN0cmluZyBvYmplY3Qg
dG8gaG9sZCByZWYgY291bnQgaW4gY2FzZQotICAgICAgICAvLyBzdGF0ZSgpLm1fdW5wYXJzZWRG
b250IGluIHVucmVmZmVkIGJ5IGNhbGwgdG8gcmVhbGl6ZVNhdmVzIGluCi0gICAgICAgIC8vIHNl
dEZvbnQuCi0gICAgICAgIFN0cmluZyB1bnBhcnNlZEZvbnQoc3RhdGUoKS5tX3VucGFyc2VkRm9u
dCk7Ci0gICAgICAgIHNldEZvbnQodW5wYXJzZWRGb250KTsKLSAgICB9CisgICAgaWYgKCFzdGF0
ZSgpLm1fcmVhbGl6ZWRGb250KQorICAgICAgICBzZXRGb250KHN0YXRlKCkubV91bnBhcnNlZEZv
bnQpOwogICAgIHJldHVybiBzdGF0ZSgpLm1fZm9udDsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>