<?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>23077</bug_id>
          
          <creation_ts>2009-01-02 08:23:16 -0800</creation_ts>
          <short_desc>Make application cache use SQLite built-in user_version</short_desc>
          <delta_ts>2009-01-05 07:21:14 -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>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>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>104085</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-02 08:23:16 -0800</bug_when>
    <thetext>Anders says we should use built-in SQLite versioning instead of SchemaVersion table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104086</commentid>
    <comment_count>1</comment_count>
      <attachid>26370</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-02 08:26:58 -0800</bug_when>
    <thetext>Created attachment 26370
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104092</commentid>
    <comment_count>2</comment_count>
      <attachid>26370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 09:28:41 -0800</bug_when>
    <thetext>Comment on attachment 26370
proposed patch

&gt; +    if (static_cast&lt;int&gt;(sizeof(userVersionSQL)) &lt; numBytes)
&gt; +        ASSERT_NOT_REACHED();

This is a strange way to write an assertion. Are you just trying to avoid the unused local variable warning? Is there a better idiom for this sort of thing? It seems to come up often.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104098</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-02 09:43:12 -0800</bug_when>
    <thetext>Yes, that was the reason. Other ways to write this are to put the left part of variable definition/assignment under ifndef NDEBUG, or to add UNUSED_PARAM() for the variable. I&apos;m not sure if either is better.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104154</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 12:46:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Yes, that was the reason. Other ways to write this are to put the left part of
&gt; variable definition/assignment under ifndef NDEBUG, or to add UNUSED_PARAM()
&gt; for the variable. I&apos;m not sure if either is better.

This comes up often enough that I think we should add a macro just for this purpose:

    ASSERT_RESULT(variableName, result);

It could use UNUSED_PARAM in NDEBUG and plain old ASSERT in debug.

An advantage of this over ASSERT_NOT_REACHED is that the assertion message can be more specific. And also, clarity.

It&apos;s way better than the #ifndef NDEBUG and the explicit use of UNUSED_PARAM for something that&apos;s not a &quot;PARAM&quot;.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104170</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-02 13:31:49 -0800</bug_when>
    <thetext>Sounds good to me. I&apos;ll make a patch (do you think that adding this to wtf/UnusedParam.h would be acceptable? or should I rename it to Unused.h?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104175</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 14:00:05 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;ll make a patch (do you think that adding this to
&gt; wtf/UnusedParam.h would be acceptable?

I think this is part of Assertions.h. The fact that it depends on UnusedParam.h is an implementation detail.

&gt; or should I rename it to Unused.h?)

That might be good to do eventually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104176</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 14:03:08 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I think this is part of Assertions.h. The fact that it depends on UnusedParam.h
&gt; is an implementation detail.

And whether it actually uses UnusedParam.h or not is an open question in my opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104407</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-05 00:56:23 -0800</bug_when>
    <thetext>Committed revision 39597. I&apos;ll make a separate patch for ASSERT_RESULT.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104425</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-05 07:21:14 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed revision 39597. I&apos;ll make a separate patch for ASSERT_RESULT.

I was also thinking we might want a similar ASSERT_UNUSED_PARAM function for an assertion on a parameter that is otherwise unused. Sorry to continue hijacking this bug report for this discussion.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26370</attachid>
            <date>2009-01-02 08:26:58 -0800</date>
            <delta_ts>2009-01-02 09:28:41 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>UserVersion.txt</filename>
            <type>text/plain</type>
            <size>3507</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTU0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDEtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3NworICAgICAgICBN
YWtlIGFwcGxpY2F0aW9uIGNhY2hlIHVzZSBTUUxpdGUgYnVpbHQtaW4gdXNlcl92ZXJzaW9uCisK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnZlcmlmeVNjaGVtYVZl
cnNpb24pOiBDaGFuZ2VkIHRvIHRyYWNrIHZlcnNpb25zIHdpdGgKKyAgICAgICAgUFJBR01BIHVz
ZXJfdmVyc2lvbi4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuaDogKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6KToKKyAgICAg
ICAgVXNlZCB0aGUgb2NjYXNpb24gdG8gZ2V0IHJpZCBvZiB0aGUgaG9sZSBpbiBiaXRtYXNrIHRo
YXQgd2FzIGEgbGVmdG92ZXIgZnJvbSBvcHBvcnR1bmlzdGljCisgICAgICAgIGNhY2hlIGVudHJp
ZXMuCisKIDIwMDktMDEtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgJKHJldmlzaW9uIDM5
NTQ3KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDcgQEAgcHVibGljOgogICAgICAgICBFeHBs
aWNpdCA9IDEgPDwgMiwKICAgICAgICAgRm9yZWlnbiA9IDEgPDwgMywKICAgICAgICAgRmFsbGJh
Y2sgPSAxIDw8IDQsCi0gICAgICAgIC8vIEJpdCA1IHdhcyB1c2VkIGZvciBvcHBvcnR1bmlzdGlj
IGVudHJpZXMsIHdoaWNoIHdlcmUgcmVtb3ZlZCBmcm9tIHRoZSBzcGVjLgotICAgICAgICBEeW5h
bWljID0gMSA8PCA2CisgICAgICAgIER5bmFtaWMgPSAxIDw8IDUKICAgICB9OwogICAgICAgICAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDM5NTQ4KQorKysgV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTgsMzAgKzI5OCwzMSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU1FM
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNvbnN0IGludCBTY2hlbWFWZXJzaW9u
ID0gMzsKK3N0YXRpYyBjb25zdCBpbnQgc2NoZW1hVmVyc2lvbiA9IDM7CiAgICAgCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKCkKIHsKLSAgICBpZiAo
bV9kYXRhYmFzZS50YWJsZUV4aXN0cygiU2NoZW1hVmVyc2lvbiIpKSB7Ci0gICAgICAgIGludCB2
ZXJzaW9uID0gU1FMaXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgdmVyc2lvbiBmcm9t
IFNjaGVtYVZlcnNpb24iKS5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgICAgIAotICAgICAgICBpZiAo
dmVyc2lvbiA9PSBTY2hlbWFWZXJzaW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKKyAgICBpbnQgdmVyc2lvbiA9IFNRTGl0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiUFJBR01B
IHVzZXJfdmVyc2lvbiIpLmdldENvbHVtbkludCgwKTsKKyAgICBpZiAodmVyc2lvbiA9PSBzY2hl
bWFWZXJzaW9uKQorICAgICAgICByZXR1cm47CisKICAgICBtX2RhdGFiYXNlLmNsZWFyQWxsVGFi
bGVzKCk7CiAKLSAgICBTUUxpdGVUcmFuc2FjdGlvbiBjcmVhdGVTY2hlbWFWZXJzaW9uVGFibGUo
bV9kYXRhYmFzZSk7Ci0gICAgY3JlYXRlU2NoZW1hVmVyc2lvblRhYmxlLmJlZ2luKCk7CisgICAg
Ly8gVXBkYXRlIHVzZXIgdmVyc2lvbi4KKyAgICBTUUxpdGVUcmFuc2FjdGlvbiBzZXREYXRhYmFz
ZVZlcnNpb24obV9kYXRhYmFzZSk7CisgICAgc2V0RGF0YWJhc2VWZXJzaW9uLmJlZ2luKCk7CisK
KyAgICBjaGFyIHVzZXJWZXJzaW9uU1FMWzMyXTsKKyAgICBpbnQgbnVtQnl0ZXMgPSBzbnByaW50
Zih1c2VyVmVyc2lvblNRTCwgc2l6ZW9mKHVzZXJWZXJzaW9uU1FMKSwgIlBSQUdNQSB1c2VyX3Zl
cnNpb249JWQiLCBzY2hlbWFWZXJzaW9uKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YodXNlclZlcnNpb25TUUwpKSA8IG51bUJ5dGVzKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIAotICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgU2NoZW1hVmVyc2lv
biAodmVyc2lvbiBJTlRFR0VSIE5PVCBOVUxMKSIpOwotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBJTlRPIFNjaGVtYVZlcnNpb24gKHZlcnNpb24pIFZB
TFVFUyAoPykiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsIHVz
ZXJWZXJzaW9uU1FMKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRP
aykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgU2No
ZW1hVmVyc2lvbik7CiAgICAgZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQpOwotICAgIGNyZWF0
ZVNjaGVtYVZlcnNpb25UYWJsZS5jb21taXQoKTsKKyAgICBzZXREYXRhYmFzZVZlcnNpb24uY29t
bWl0KCk7CiB9CiAgICAgCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJh
c2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkK
</data>
<flag name="review"
          id="12501"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>