<?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>37194</bug_id>
          
          <creation_ts>2010-04-07 01:49:53 -0700</creation_ts>
          <short_desc>Prevent wrong use of PrintContext</short_desc>
          <delta_ts>2010-04-09 16:43:00 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hayato</cc>
    
    <cc>yuzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>209534</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-07 01:49:53 -0700</bug_when>
    <thetext>We can misuse PrintContext in several ways. We can call PrintContext::begin() twice, we can call PrintContext::end() without PrintContext::begin(), and we can forget PrintContext::end() after PrintContext::begin(). Bug 36049 is an example of such mistakes.

Let&apos;s add a boolean flag to prevent such misuses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209535</commentid>
    <comment_count>1</comment_count>
      <attachid>52714</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-07 01:51:31 -0700</bug_when>
    <thetext>Created attachment 52714
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209538</commentid>
    <comment_count>2</comment_count>
      <attachid>52714</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-07 01:59:45 -0700</bug_when>
    <thetext>Comment on attachment 52714
Patch v1

&gt;  PrintContext::~PrintContext()
&gt;  {
&gt; +    if (m_isPrinting)
&gt; +        end();
&gt;      m_pageRects.clear();
&gt;  }

Or, we may want to add ASSERT(!m_isPrinting) here. I personally like this kind of automatic release, but I&apos;m not sure if this is suitable for this case. If a user of PrintContext relies on this, her/his code may have begin() without end(), which might look weird a bit. Hmm... I changed my mind while I&apos;m writing this comment. I&apos;ll revise the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209539</commentid>
    <comment_count>3</comment_count>
      <attachid>52716</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-07 02:01:56 -0700</bug_when>
    <thetext>Created attachment 52716
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210911</commentid>
    <comment_count>4</comment_count>
      <attachid>52716</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-09 14:03:13 -0700</bug_when>
    <thetext>Comment on attachment 52716
Patch v2

     if (m_isPrinting)
 43         end();
isn&apos;t needed.  the ASSERT is enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210912</commentid>
    <comment_count>5</comment_count>
      <attachid>52716</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-09 14:04:01 -0700</bug_when>
    <thetext>Comment on attachment 52716
Patch v2

You should consider documenting what m_isPrinting is for in teh header, otherwise this looks OK (- the release-only auto-end stuff).

r=me with the two above comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210923</commentid>
    <comment_count>6</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-09 14:13:12 -0700</bug_when>
    <thetext>Why is m_isPrinting protected rather than private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211023</commentid>
    <comment_count>7</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-09 16:41:04 -0700</bug_when>
    <thetext>Committed r57384: &lt;http://trac.webkit.org/changeset/57384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211024</commentid>
    <comment_count>8</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-09 16:43:00 -0700</bug_when>
    <thetext>Thanks for your suggestions! I addressed the three (2 from eric + 1 from yuzo) comments and landed the patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52714</attachid>
            <date>2010-04-07 01:51:31 -0700</date>
            <delta_ts>2010-04-07 02:01:51 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-37194-20100407015129.patch</filename>
            <type>text/plain</type>
            <size>2228</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzMxMTM1MS4uNjU4OWFiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0wNyAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgd3JvbmcgdXNlIG9mIFByaW50Q29udGV4dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxOTQKKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgY2hhbmdlIHRoZSBiZWhh
dmlvci4KKworICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlByaW50Q29udGV4dDo6UHJpbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50
Q29udGV4dDo6flByaW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6ZW5kKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5oOgorCiAyMDEwLTA0LTA3ICBKYWltZSBZYXAgIDxqYWltZXlh
cEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuY3BwCmluZGV4IDBkOWM0NTYuLjg2OGY4ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCkBAIC0zMiwxMSArMzIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcmludENvbnRl
eHQ6OlByaW50Q29udGV4dChGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAg
ICwgbV9pc1ByaW50aW5nKGZhbHNlKQogewogfQogCiBQcmludENvbnRleHQ6On5QcmludENvbnRl
eHQoKQogeworICAgIGlmIChtX2lzUHJpbnRpbmcpCisgICAgICAgIGVuZCgpOwogICAgIG1fcGFn
ZVJlY3RzLmNsZWFyKCk7CiB9CiAKQEAgLTExNCw2ICsxMTcsOSBAQCB2b2lkIFByaW50Q29udGV4
dDo6Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFsKGNvbnN0IEZsb2F0U2l6ZSYg
cGFnZVNpegogCiB2b2lkIFByaW50Q29udGV4dDo6YmVnaW4oZmxvYXQgd2lkdGgpCiB7CisgICAg
QVNTRVJUKCFtX2lzUHJpbnRpbmcpOworICAgIG1faXNQcmludGluZyA9IHRydWU7CisKICAgICAv
LyBCeSBpbWFnaW5nIHRvIGEgd2lkdGggYSBsaXR0bGUgd2lkZXIgdGhhbiB0aGUgYXZhaWxhYmxl
IHBpeGVscywKICAgICAvLyB0aGluIHBhZ2VzIHdpbGwgYmUgc2NhbGVkIGRvd24gYSBsaXR0bGUs
IG1hdGNoaW5nIHRoZSB3YXkgdGhleQogICAgIC8vIHByaW50IGluIElFIGFuZCBDYW1pbm8uIFRo
aXMgbGV0cyB0aGVtIHVzZSBmZXdlciBzaGVldHMgdGhhbiB0aGV5CkBAIC0xNTAsNiArMTU2LDgg
QEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sUGFnZShHcmFwaGljc0NvbnRleHQmIGN0eCwgaW50
IHBhZ2VOdW1iZXIsIGZsb2F0IHdpZHRoKQogCiB2b2lkIFByaW50Q29udGV4dDo6ZW5kKCkKIHsK
KyAgICBBU1NFUlQobV9pc1ByaW50aW5nKTsKKyAgICBtX2lzUHJpbnRpbmcgPSBmYWxzZTsKICAg
ICBtX2ZyYW1lLT5zZXRQcmludGluZyhmYWxzZSwgMCwgMCwgdHJ1ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBiL1dlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuaAppbmRleCA4YTFhNzdkLi44MGExYWVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUHJp
bnRDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCkBAIC01OSw2ICs1
OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBWZWN0
b3I8SW50UmVjdD4gbV9wYWdlUmVjdHM7CisgICAgYm9vbCBtX2lzUHJpbnRpbmc7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplSW50ZXJuYWwoY29uc3Qg
RmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzLCBib29sIGFsbG93SG9yaXpvbnRhbE11bHRpUGFn
ZXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52716</attachid>
            <date>2010-04-07 02:01:56 -0700</date>
            <delta_ts>2010-04-09 14:04:01 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-37194-20100407020154.patch</filename>
            <type>text/plain</type>
            <size>2256</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzMxMTM1MS4uNjU4OWFiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0wNyAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFByZXZlbnQgd3JvbmcgdXNlIG9mIFByaW50Q29udGV4dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxOTQKKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgY2hhbmdlIHRoZSBiZWhh
dmlvci4KKworICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlByaW50Q29udGV4dDo6UHJpbnRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50
Q29udGV4dDo6flByaW50Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6ZW5kKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5oOgorCiAyMDEwLTA0LTA3ICBKYWltZSBZYXAgIDxqYWltZXlh
cEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuY3BwCmluZGV4IDBkOWM0NTYuLjFkODUxMWEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCkBAIC0zMiwxMSArMzIsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcmludENvbnRl
eHQ6OlByaW50Q29udGV4dChGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAg
ICwgbV9pc1ByaW50aW5nKGZhbHNlKQogewogfQogCiBQcmludENvbnRleHQ6On5QcmludENvbnRl
eHQoKQogeworICAgIEFTU0VSVCghbV9pc1ByaW50aW5nKTsKKyAgICBpZiAobV9pc1ByaW50aW5n
KQorICAgICAgICBlbmQoKTsKICAgICBtX3BhZ2VSZWN0cy5jbGVhcigpOwogfQogCkBAIC0xMTQs
NiArMTE4LDkgQEAgdm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNp
emVJbnRlcm5hbChjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXoKIAogdm9pZCBQcmludENvbnRleHQ6
OmJlZ2luKGZsb2F0IHdpZHRoKQogeworICAgIEFTU0VSVCghbV9pc1ByaW50aW5nKTsKKyAgICBt
X2lzUHJpbnRpbmcgPSB0cnVlOworCiAgICAgLy8gQnkgaW1hZ2luZyB0byBhIHdpZHRoIGEgbGl0
dGxlIHdpZGVyIHRoYW4gdGhlIGF2YWlsYWJsZSBwaXhlbHMsCiAgICAgLy8gdGhpbiBwYWdlcyB3
aWxsIGJlIHNjYWxlZCBkb3duIGEgbGl0dGxlLCBtYXRjaGluZyB0aGUgd2F5IHRoZXkKICAgICAv
LyBwcmludCBpbiBJRSBhbmQgQ2FtaW5vLiBUaGlzIGxldHMgdGhlbSB1c2UgZmV3ZXIgc2hlZXRz
IHRoYW4gdGhleQpAQCAtMTUwLDYgKzE1Nyw4IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBh
Z2UoR3JhcGhpY3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKIAog
dm9pZCBQcmludENvbnRleHQ6OmVuZCgpCiB7CisgICAgQVNTRVJUKG1faXNQcmludGluZyk7Cisg
ICAgbV9pc1ByaW50aW5nID0gZmFsc2U7CiAgICAgbV9mcmFtZS0+c2V0UHJpbnRpbmcoZmFsc2Us
IDAsIDAsIHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmggYi9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggOGExYTc3ZC4uODBhMWFlZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuaApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVmVjdG9yPEludFJlY3Q+IG1fcGFnZVJlY3RzOworICAg
IGJvb2wgbV9pc1ByaW50aW5nOwogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0
c1dpdGhQYWdlU2l6ZUludGVybmFsKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywg
Ym9vbCBhbGxvd0hvcml6b250YWxNdWx0aVBhZ2VzKTsK
</data>
<flag name="review"
          id="36262"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="36627"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>