<?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>24398</bug_id>
          
          <creation_ts>2009-03-05 12:26:02 -0800</creation_ts>
          <short_desc>BackForwardList doesn&apos;t initialize m_client, which causes a crash</short_desc>
          <delta_ts>2010-02-24 17:38:06 -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>History</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="Marc-Antoine Ruel">maruel</reporter>
          <assigned_to name="Marc-Antoine Ruel">maruel</assigned_to>
          <cc>hclam</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>112423</commentid>
    <comment_count>0</comment_count>
    <who name="Marc-Antoine Ruel">maruel</who>
    <bug_when>2009-03-05 12:26:02 -0800</bug_when>
    <thetext>In the chromium port, when loading test_shell with a svg file, reload the &quot;page&quot; will crash test_shell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112424</commentid>
    <comment_count>1</comment_count>
      <attachid>28315</attachid>
    <who name="Marc-Antoine Ruel">maruel</who>
    <bug_when>2009-03-05 12:26:40 -0800</bug_when>
    <thetext>Created attachment 28315
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112551</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-03-06 00:10:12 -0800</bug_when>
    <thetext>The header for BackForwardList contains the following:

#if PLATFORM(CHROMIUM)
    // Must be called before any other methods. 
    void setClient(BackForwardListClient* client) { m_client = client; }
#endif

This implies that your code is using this class incorrectly.  Of course, it may be that the existing design of the class is not ideal and it should be changed, but if that is the case the comment is no longer correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112878</commentid>
    <comment_count>3</comment_count>
    <who name="Marc-Antoine Ruel">maruel</who>
    <bug_when>2009-03-09 12:48:25 -0700</bug_when>
    <thetext>What is happening in that particular case is that SVGImage::dataChanged() creates a new dummy Page() which doesn&apos;t have any back-forward logic. I think null-initializing is fine in this case since ~Page() always calls m_backForwardList-&gt;close(). I can update the comment in BackForwardList.h for BackForwardListClient::setClient() to
    // Must be called before any other methods except close().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112883</commentid>
    <comment_count>4</comment_count>
      <attachid>28315</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-03-09 13:03:44 -0700</bug_when>
    <thetext>Comment on attachment 28315
proposed patch

&gt;Index: WebCore/ChangeLog
...
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        Fix a crash when loading a non html page (like a svg file) in test_shell
&gt;+        and reloading the page.
&gt;+
&gt;+        * history/BackForwardListChromium.cpp:

please add a bug link to the ChangeLog.


&gt;Index: WebCore/history/BackForwardListChromium.cpp
...
&gt;+    if (m_client)
&gt;+        m_client-&gt;close();

we should probably null check each usage and probably add some ASSERTs.  wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112886</commentid>
    <comment_count>5</comment_count>
      <attachid>28418</attachid>
    <who name="Marc-Antoine Ruel">maruel</who>
    <bug_when>2009-03-09 13:25:49 -0700</bug_when>
    <thetext>Created attachment 28418
Fixed ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112888</commentid>
    <comment_count>6</comment_count>
    <who name="Marc-Antoine Ruel">maruel</who>
    <bug_when>2009-03-09 13:27:45 -0700</bug_when>
    <thetext>I don&apos;t think it is a good idea to NULL check each functions and add ASSERTs. Having m_client null-initialized will help there and this was a very particular case. I looked at directly extracting m_client from m_page and it is very deep down multiple objects hierarchy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113138</commentid>
    <comment_count>7</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-03-11 02:00:24 -0700</bug_when>
    <thetext>Please don&apos;t use NULL in C++ code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113430</commentid>
    <comment_count>8</comment_count>
      <attachid>28418</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-03-12 11:33:41 -0700</bug_when>
    <thetext>Comment on attachment 28418
Fixed ChangeLog

&gt;Index: WebCore/history/BackForwardListChromium.cpp
...
&gt;+    , m_client(NULL)

As mentioned, this should be 0 instead of NULL.  Please post a revised patch, and then LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113629</commentid>
    <comment_count>9</comment_count>
      <attachid>28587</attachid>
    <who name="Marc-Antoine Ruel">maruel</who>
    <bug_when>2009-03-13 11:22:22 -0700</bug_when>
    <thetext>Created attachment 28587
new patch file

Replace NULL with 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114282</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-03-18 23:18:37 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/41824</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193578</commentid>
    <comment_count>11</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-02-24 17:38:06 -0800</bug_when>
    <thetext>*** Bug 24636 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28315</attachid>
            <date>2009-03-05 12:26:40 -0800</date>
            <delta_ts>2009-03-09 13:25:49 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>backforward.diff</filename>
            <type>text/plain</type>
            <size>1317</size>
            <attacher name="Marc-Antoine Ruel">maruel</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTQ1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDktMDMtMDUgIE1hcmMtQW50b2luZSBSdWVsICA8bWFydWVsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXggYSBjcmFzaCB3aGVuIGxvYWRpbmcgYSBub24gaHRtbCBwYWdlIChsaWtlIGEgc3Zn
IGZpbGUpIGluIHRlc3Rfc2hlbGwKKyAgICAgICAgYW5kIHJlbG9hZGluZyB0aGUgcGFnZS4KKwor
ICAgICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0OjpCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFja0ZvcndhcmRMaXN0OjpjbG9zZSk6CisKIDIwMDktMDMtMDUgIFlvbmcgTGkgIDx5
b25nLmxpQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5jcHAJ
KHJldmlzaW9uIDQxNDU1KQorKysgV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdENocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgTm9DdXJyZW50SXRlbUluZGV4CiAKIEJhY2tGb3J3YXJkTGlzdDo6QmFja0ZvcndhcmRM
aXN0KFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fY2xpZW50KE5VTEwp
CiAgICAgLCBtX2NhcGFjaXR5KERlZmF1bHRDYXBhY2l0eSkKICAgICAsIG1fY2xvc2VkKHRydWUp
CiAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKQEAgLTEyOCw3ICsxMjksOCBAQCBIaXN0b3J5SXRlbVZl
Y3RvciYgQmFja0ZvcndhcmRMaXN0OjplbnRyCiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpjbG9z
ZSgpCiB7Ci0gICAgbV9jbGllbnQtPmNsb3NlKCk7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAg
ICBtX2NsaWVudC0+Y2xvc2UoKTsKICAgICBtX3BhZ2UgPSAwOwogICAgIG1fY2xvc2VkID0gdHJ1
ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28418</attachid>
            <date>2009-03-09 13:25:49 -0700</date>
            <delta_ts>2009-03-12 11:33:41 -0700</delta_ts>
            <desc>Fixed ChangeLog</desc>
            <filename>b24398.diff</filename>
            <type>text/plain</type>
            <size>1357</size>
            <attacher name="Marc-Antoine Ruel">maruel</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTQ3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDMtMDUgIE1hcmMtQW50b2luZSBSdWVsICA8bWFydWVsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzOTgKKyAgICAg
ICAgRml4IGEgY3Jhc2ggd2hlbiBsb2FkaW5nIGEgc3ZnIGZpbGUgaW4gdGVzdF9zaGVsbAorICAg
ICAgICBhbmQgcmVsb2FkaW5nIHRoZSBwYWdlLgorCisgICAgICAgICogaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6
OkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OmNs
b3NlKToKKwogMjAwOS0wMy0wNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA0MTQ3OSkK
KysrIFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vQ3VycmVudEl0
ZW1JbmRleAogCiBCYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3YXJkTGlzdChQYWdlKiBwYWdlKQog
ICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudChOVUxMKQogICAgICwgbV9jYXBhY2l0
eShEZWZhdWx0Q2FwYWNpdHkpCiAgICAgLCBtX2Nsb3NlZCh0cnVlKQogICAgICwgbV9lbmFibGVk
KHRydWUpCkBAIC0xMjgsNyArMTI5LDggQEAgSGlzdG9yeUl0ZW1WZWN0b3ImIEJhY2tGb3J3YXJk
TGlzdDo6ZW50cgogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQogewotICAgIG1fY2xp
ZW50LT5jbG9zZSgpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmNsb3Nl
KCk7CiAgICAgbV9wYWdlID0gMDsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiB9Cg==
</data>
<flag name="review"
          id="13927"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28587</attachid>
            <date>2009-03-13 11:22:22 -0700</date>
            <delta_ts>2009-03-18 23:09:01 -0700</delta_ts>
            <desc>new patch file</desc>
            <filename>b24398_2.diff</filename>
            <type>text/plain</type>
            <size>1354</size>
            <attacher name="Marc-Antoine Ruel">maruel</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTQ3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDMtMDUgIE1hcmMtQW50b2luZSBSdWVsICA8bWFydWVsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzOTgKKyAgICAg
ICAgRml4IGEgY3Jhc2ggd2hlbiBsb2FkaW5nIGEgc3ZnIGZpbGUgaW4gdGVzdF9zaGVsbAorICAg
ICAgICBhbmQgcmVsb2FkaW5nIHRoZSBwYWdlLgorCisgICAgICAgICogaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3RDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6
OkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q6OmNs
b3NlKToKKwogMjAwOS0wMy0wNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA0MTQ3OSkK
KysrIFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RDaHJvbWl1bS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vQ3VycmVudEl0
ZW1JbmRleAogCiBCYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3YXJkTGlzdChQYWdlKiBwYWdlKQog
ICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX2NsaWVudCgwKQogICAgICwgbV9jYXBhY2l0eShE
ZWZhdWx0Q2FwYWNpdHkpCiAgICAgLCBtX2Nsb3NlZCh0cnVlKQogICAgICwgbV9lbmFibGVkKHRy
dWUpCkBAIC0xMjgsNyArMTI5LDggQEAgSGlzdG9yeUl0ZW1WZWN0b3ImIEJhY2tGb3J3YXJkTGlz
dDo6ZW50cgogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQogewotICAgIG1fY2xpZW50
LT5jbG9zZSgpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmNsb3NlKCk7
CiAgICAgbV9wYWdlID0gMDsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiB9Cg==
</data>
<flag name="review"
          id="14067"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>