<?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>46187</bug_id>
          
          <creation_ts>2010-09-21 08:01:28 -0700</creation_ts>
          <short_desc>Add internetStatusCallback to ResourceHandleWin</short_desc>
          <delta_ts>2010-09-23 08:39:42 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</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>
          
          <blocked>43712</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>aroben</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>282309</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-09-21 08:01:28 -0700</bug_when>
    <thetext>see patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282319</commentid>
    <comment_count>1</comment_count>
      <attachid>68241</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-09-21 08:34:44 -0700</bug_when>
    <thetext>Created attachment 68241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282325</commentid>
    <comment_count>2</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-09-21 08:44:14 -0700</bug_when>
    <thetext>&gt; WebCore/platform/network/win/ResourceHandleWin.cpp:297
&gt;  void ResourceHandle::onRequestComplete(LPARAM lParam)
Will be changed to &quot;bool onRequestComplete(void)&quot; in a further patch (The file doesn&apos;t compile anyway at the moment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283604</commentid>
    <comment_count>3</comment_count>
      <attachid>68241</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-09-23 06:46:11 -0700</bug_when>
    <thetext>Comment on attachment 68241
Patch

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

&gt; WebCore/platform/network/win/ResourceHandleWin.cpp:266
&gt; +void CALLBACK ResourceHandle::internetStatusCallback(HINTERNET internetHandle, DWORD_PTR context, DWORD internetStatus,

No need for &quot;CALLBACK&quot; here. It&apos;s only needed on the declaration.

&gt; WebCore/platform/network/win/ResourceHandleWin.cpp:279
&gt; +    switch (internetStatus) {
&gt; +    case INTERNET_STATUS_REDIRECT:
&gt; +        handle-&gt;d-&gt;m_redirectUrl = String(static_cast&lt;UChar*&gt;(statusInformation), statusInformationLength);
&gt; +        callOnMainThread(callOnRedirect, handle);
&gt; +        break;
&gt; +
&gt; +    case INTERNET_STATUS_REQUEST_COMPLETE:
&gt; +        callOnMainThread(callOnRequestComplete, handle);
&gt; +        break;

What guarantees that the ResourceHandle hasn&apos;t been deleted by the time callOnRedirect/callOnRequestComplete are called on the main thread? For that matter, what guarantees that the ResourceHandle hasn&apos;t been deleted by the time internetStatusCallback is called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283606</commentid>
    <comment_count>4</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-09-23 06:48:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 68241 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68241&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/network/win/ResourceHandleWin.cpp:266
&gt; &gt; +void CALLBACK ResourceHandle::internetStatusCallback(HINTERNET internetHandle, DWORD_PTR context, DWORD internetStatus,
&gt; 
&gt; No need for &quot;CALLBACK&quot; here. It&apos;s only needed on the declaration.
&gt; 
&gt; &gt; WebCore/platform/network/win/ResourceHandleWin.cpp:279
&gt; &gt; +    switch (internetStatus) {
&gt; &gt; +    case INTERNET_STATUS_REDIRECT:
&gt; &gt; +        handle-&gt;d-&gt;m_redirectUrl = String(static_cast&lt;UChar*&gt;(statusInformation), statusInformationLength);
&gt; &gt; +        callOnMainThread(callOnRedirect, handle);
&gt; &gt; +        break;
&gt; &gt; +
&gt; &gt; +    case INTERNET_STATUS_REQUEST_COMPLETE:
&gt; &gt; +        callOnMainThread(callOnRequestComplete, handle);
&gt; &gt; +        break;
&gt; 
&gt; What guarantees that the ResourceHandle hasn&apos;t been deleted by the time callOnRedirect/callOnRequestComplete are called on the main thread? For that matter, what guarantees that the ResourceHandle hasn&apos;t been deleted by the time internetStatusCallback is called?
ref() in start() will do that: http://trac.webkit.org/browser/trunk/WebCore/platform/network/win/ResourceHandleWin.cpp#L438</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283609</commentid>
    <comment_count>5</comment_count>
      <attachid>68512</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-09-23 06:55:01 -0700</bug_when>
    <thetext>Created attachment 68512
Patch (removed CALLBACK in cpp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283614</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-09-23 07:05:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 68241 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68241&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; WebCore/platform/network/win/ResourceHandleWin.cpp:266
&gt; &gt; &gt; +void CALLBACK ResourceHandle::internetStatusCallback(HINTERNET internetHandle, DWORD_PTR context, DWORD internetStatus,
&gt; &gt; 
&gt; &gt; No need for &quot;CALLBACK&quot; here. It&apos;s only needed on the declaration.
&gt; &gt; 
&gt; &gt; &gt; WebCore/platform/network/win/ResourceHandleWin.cpp:279
&gt; &gt; &gt; +    switch (internetStatus) {
&gt; &gt; &gt; +    case INTERNET_STATUS_REDIRECT:
&gt; &gt; &gt; +        handle-&gt;d-&gt;m_redirectUrl = String(static_cast&lt;UChar*&gt;(statusInformation), statusInformationLength);
&gt; &gt; &gt; +        callOnMainThread(callOnRedirect, handle);
&gt; &gt; &gt; +        break;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    case INTERNET_STATUS_REQUEST_COMPLETE:
&gt; &gt; &gt; +        callOnMainThread(callOnRequestComplete, handle);
&gt; &gt; &gt; +        break;
&gt; &gt; 
&gt; &gt; What guarantees that the ResourceHandle hasn&apos;t been deleted by the time callOnRedirect/callOnRequestComplete are called on the main thread? For that matter, what guarantees that the ResourceHandle hasn&apos;t been deleted by the time internetStatusCallback is called?
&gt; ref() in start() will do that: http://trac.webkit.org/browser/trunk/WebCore/platform/network/win/ResourceHandleWin.cpp#L438

The ref() in start() will probably help, but not without knowing where the corresponding deref() happens. I see in attachment 68285 that it&apos;s going to happen on onRequestComplete. But what happens if the request gets cancelled? E.g., it could get cancelled while we&apos;re inside internetStatusCallback, or between when internetStatusCallback returns and callOnRedirect is called, etc. Do we need to worry about those cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283627</commentid>
    <comment_count>7</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-09-23 07:33:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The ref() in start() will probably help, but not without knowing where the corresponding deref() happens. I see in attachment 68285 [details] that it&apos;s going to happen on onRequestComplete. But what happens if the request gets cancelled? E.g., it could get cancelled while we&apos;re inside internetStatusCallback, or between when internetStatusCallback returns and callOnRedirect is called, etc. Do we need to worry about those cases?
A cancel() does not deref(), it will only close the handle and set it to null. deref() will happen when onRequestComplete() is called from MainThread.
see in the &quot;complete&quot; version: http://gitorious.org/+wincewebkit-developers/webkit/wincewebkit/blobs/wincegdi/WebCore/platform/network/win/ResourceHandleWin.cpp#line209</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283666</commentid>
    <comment_count>8</comment_count>
      <attachid>68512</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-23 08:39:37 -0700</bug_when>
    <thetext>Comment on attachment 68512
Patch (removed CALLBACK in cpp)

Clearing flags on attachment: 68512

Committed r68144: &lt;http://trac.webkit.org/changeset/68144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283667</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-23 08:39:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68241</attachid>
            <date>2010-09-21 08:34:44 -0700</date>
            <delta_ts>2010-09-23 06:55:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46187.patch</filename>
            <type>text/plain</type>
            <size>4278</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3OTUzKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxMC0wOS0yMCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgaW50ZXJuZXRTdGF0dXNDYWxsYmFjayB0byBSZXNvdXJjZUhhbmRsZVdpbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MTg3CisKKyAg
ICAgICAgQWRkIGNhbGxiYWNrIGZvciBhc3luY2hyb25vdXMgbmV0d29yayB0cmFuc2Zlci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxsT25SZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25SZXF1ZXN0Q29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmludGVybmV0U3RhdHVzQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6Om9uUmVkaXJlY3QpOgor
CiAyMDEwLTA5LTIxICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiA2Nzk0MykKKysrIFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsOCAr
MTcyLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVjZWl2ZWRSZXNwb25zZSgpIGNvbnN0Owog
ICAgIHZvaWQgZmlsZUxvYWRUaW1lcihUaW1lcjxSZXNvdXJjZUhhbmRsZT4qKTsKICAgICB2b2lk
IG9uSGFuZGxlQ3JlYXRlZChMUEFSQU0pOwotICAgIHZvaWQgb25SZXF1ZXN0UmVkaXJlY3RlZChM
UEFSQU0pOworICAgIHZvaWQgb25SZWRpcmVjdCgpOwogICAgIHZvaWQgb25SZXF1ZXN0Q29tcGxl
dGUoTFBBUkFNKTsKKyAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyBpbnRlcm5ldFN0YXR1c0NhbGxi
YWNrKEhJTlRFUk5FVCwgRFdPUkRfUFRSLCBEV09SRCwgTFBWT0lELCBEV09SRCk7CiAgICAgZnJp
ZW5kIHZvaWQgX19zdGRjYWxsIHRyYW5zZmVySm9iU3RhdHVzQ2FsbGJhY2soSElOVEVSTkVULCBE
V09SRF9QVFIsIERXT1JELCBMUFZPSUQsIERXT1JEKTsKICAgICBmcmllbmQgTFJFU1VMVCBfX3N0
ZGNhbGwgUmVzb3VyY2VIYW5kbGVXbmRQcm9jKEhXTkQsIHVuc2lnbmVkIG1lc3NhZ2UsIFdQQVJB
TSwgTFBBUkFNKTsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDY3OTQzKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc4LDYgKzE3OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5n
IG1fcG9zdFJlZmVycmVyOwogICAgICAgICBib29sIG1faGFzUmVjZWl2ZWRSZXNwb25zZTsKICAg
ICAgICAgYm9vbCBtX3Jlc2VuZDsKKyAgICAgICAgU3RyaW5nIG1fcmVkaXJlY3RVcmw7CiAjZW5k
aWYKICNpZiBVU0UoQ1VSTCkKICAgICAgICAgQ1VSTCogbV9oYW5kbGU7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCShy
ZXZpc2lvbiA2Nzk1MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VI
YW5kbGVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsMTUgKzI1MSw0NyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpvbkhhbmRsZUNyZWF0ZWQoTFBBCiAgICAgfQogfQogCi12b2lkIFJlc291
cmNlSGFuZGxlOjpvblJlcXVlc3RSZWRpcmVjdGVkKExQQVJBTSBsUGFyYW0pCitzdGF0aWMgdm9p
ZCBjYWxsT25SZWRpcmVjdCh2b2lkKiBjb250ZXh0KQogewotICAgIC8vIElmIGFscmVhZHkgY2Fu
Y2VsZWQsIHRoZW4gaWdub3JlIHRoaXMgZXZlbnQuCi0gICAgaWYgKGQtPnN0YXR1cyAhPSAwKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCgoU3RyaW5nSW1w
bCopIGxQYXJhbSk7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlOwotICAg
IGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSk7CisgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFu
ZGxlKj4oY29udGV4dCk7CisgICAgaGFuZGxlLT5vblJlZGlyZWN0KCk7Cit9CisKK3N0YXRpYyB2
b2lkIGNhbGxPblJlcXVlc3RDb21wbGV0ZSh2b2lkKiBjb250ZXh0KQoreworICAgIFJlc291cmNl
SGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnRleHQpOwor
ICAgIGhhbmRsZS0+b25SZXF1ZXN0Q29tcGxldGUoKTsKK30KKwordm9pZCBDQUxMQkFDSyBSZXNv
dXJjZUhhbmRsZTo6aW50ZXJuZXRTdGF0dXNDYWxsYmFjayhISU5URVJORVQgaW50ZXJuZXRIYW5k
bGUsIERXT1JEX1BUUiBjb250ZXh0LCBEV09SRCBpbnRlcm5ldFN0YXR1cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBWT0lEIHN0YXR1c0lu
Zm9ybWF0aW9uLCBEV09SRCBzdGF0dXNJbmZvcm1hdGlvbkxlbmd0aCkKK3sKKyAgICBSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnRl
eHQpOworCisgICAgc3dpdGNoIChpbnRlcm5ldFN0YXR1cykgeworICAgIGNhc2UgSU5URVJORVRf
U1RBVFVTX1JFRElSRUNUOgorICAgICAgICBoYW5kbGUtPmQtPm1fcmVkaXJlY3RVcmwgPSBTdHJp
bmcoc3RhdGljX2Nhc3Q8VUNoYXIqPihzdGF0dXNJbmZvcm1hdGlvbiksIHN0YXR1c0luZm9ybWF0
aW9uTGVuZ3RoKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChjYWxsT25SZWRpcmVjdCwgaGFu
ZGxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIElOVEVSTkVUX1NUQVRVU19SRVFVRVNU
X0NPTVBMRVRFOgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKGNhbGxPblJlcXVlc3RDb21wbGV0
ZSwgaGFuZGxlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6Om9uUmVkaXJlY3QoKQoreworICAg
IFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCk7CisgICAgbmV3UmVx
dWVzdC5zZXRVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGQtPm1fcmVkaXJlY3RVcmwpKTsKKwor
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoZmlyc3RSZXF1ZXN0KCkudXJsKCksIFN0cmlu
ZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOworCisgICAgaWYgKFJlc291cmNlSGFuZGxlQ2xp
ZW50KiByZXNvdXJjZUhhbmRsZUNsaWVudCA9IGNsaWVudCgpKQorICAgICAgICByZXNvdXJjZUhh
bmRsZUNsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIG5ld1JlcXVlc3QsIHJlc3BvbnNlKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6b25SZXF1ZXN0Q29tcGxldGUoTFBBUkFNIGxQYXJh
bSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68512</attachid>
            <date>2010-09-23 06:55:01 -0700</date>
            <delta_ts>2010-09-23 08:39:37 -0700</delta_ts>
            <desc>Patch (removed CALLBACK in cpp)</desc>
            <filename>bug-46187b.patch</filename>
            <type>text/plain</type>
            <size>4373</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3OTUzKQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDIwIEBADQorMjAxMC0wOS0yMCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0K
Kw0KKyAgICAgICAgQWRkIGludGVybmV0U3RhdHVzQ2FsbGJhY2sgdG8gUmVzb3VyY2VIYW5kbGVX
aW4uDQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYx
ODcNCisNCisgICAgICAgIEFkZCBjYWxsYmFjayBmb3IgYXN5bmNocm9ub3VzIG5ldHdvcmsgdHJh
bnNmZXIuDQorDQorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoN
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6DQor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcDoNCisg
ICAgICAgIChXZWJDb3JlOjpjYWxsT25SZWRpcmVjdCk6DQorICAgICAgICAoV2ViQ29yZTo6Y2Fs
bE9uUmVxdWVzdENvbXBsZXRlKToNCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
aW50ZXJuZXRTdGF0dXNDYWxsYmFjayk6DQorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6Om9uUmVkaXJlY3QpOg0KKw0KIDIwMTAtMDktMjEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLg0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHJldmlzaW9u
IDY3OTQzKQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3
b3JraW5nIGNvcHkpDQpAQCAtMTcyLDggKzE3Miw5IEBAIHB1YmxpYzoNCiAgICAgYm9vbCBoYXNS
ZWNlaXZlZFJlc3BvbnNlKCkgY29uc3Q7DQogICAgIHZvaWQgZmlsZUxvYWRUaW1lcihUaW1lcjxS
ZXNvdXJjZUhhbmRsZT4qKTsNCiAgICAgdm9pZCBvbkhhbmRsZUNyZWF0ZWQoTFBBUkFNKTsNCi0g
ICAgdm9pZCBvblJlcXVlc3RSZWRpcmVjdGVkKExQQVJBTSk7DQorICAgIHZvaWQgb25SZWRpcmVj
dCgpOw0KICAgICB2b2lkIG9uUmVxdWVzdENvbXBsZXRlKExQQVJBTSk7DQorICAgIHN0YXRpYyB2
b2lkIENBTExCQUNLIGludGVybmV0U3RhdHVzQ2FsbGJhY2soSElOVEVSTkVULCBEV09SRF9QVFIs
IERXT1JELCBMUFZPSUQsIERXT1JEKTsNCiAgICAgZnJpZW5kIHZvaWQgX19zdGRjYWxsIHRyYW5z
ZmVySm9iU3RhdHVzQ2FsbGJhY2soSElOVEVSTkVULCBEV09SRF9QVFIsIERXT1JELCBMUFZPSUQs
IERXT1JEKTsNCiAgICAgZnJpZW5kIExSRVNVTFQgX19zdGRjYWxsIFJlc291cmNlSGFuZGxlV25k
UHJvYyhIV05ELCB1bnNpZ25lZCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7DQogI2VuZGlmDQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgJKHJldmlzaW9uIDY3OTQzKQ0KKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xNzgsNiArMTc4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgew0KICAgICAgICAgU3RyaW5nIG1fcG9zdFJlZmVycmVyOw0K
ICAgICAgICAgYm9vbCBtX2hhc1JlY2VpdmVkUmVzcG9uc2U7DQogICAgICAgICBib29sIG1fcmVz
ZW5kOw0KKyAgICAgICAgU3RyaW5nIG1fcmVkaXJlY3RVcmw7DQogI2VuZGlmDQogI2lmIFVTRShD
VVJMKQ0KICAgICAgICAgQ1VSTCogbV9oYW5kbGU7DQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAkocmV2aXNpb24gNjc5
NTMpDQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0yNTEsMTUgKzI1MSw0NyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpvbkhhbmRsZUNyZWF0ZWQoTFBBDQogICAgIH0NCiB9DQogDQotdm9pZCBSZXNvdXJjZUhh
bmRsZTo6b25SZXF1ZXN0UmVkaXJlY3RlZChMUEFSQU0gbFBhcmFtKQ0KK3N0YXRpYyB2b2lkIGNh
bGxPblJlZGlyZWN0KHZvaWQqIGNvbnRleHQpDQogew0KLSAgICAvLyBJZiBhbHJlYWR5IGNhbmNl
bGVkLCB0aGVuIGlnbm9yZSB0aGlzIGV2ZW50Lg0KLSAgICBpZiAoZC0+c3RhdHVzICE9IDApDQot
ICAgICAgICByZXR1cm47DQotDQotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KChTdHJpbmdJ
bXBsKikgbFBhcmFtKTsNCi0gICAgUmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlOw0K
LSAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpOw0KKyAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3Vy
Y2VIYW5kbGUqPihjb250ZXh0KTsNCisgICAgaGFuZGxlLT5vblJlZGlyZWN0KCk7DQorfQ0KKw0K
K3N0YXRpYyB2b2lkIGNhbGxPblJlcXVlc3RDb21wbGV0ZSh2b2lkKiBjb250ZXh0KQ0KK3sNCisg
ICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4o
Y29udGV4dCk7DQorICAgIGhhbmRsZS0+b25SZXF1ZXN0Q29tcGxldGUoKTsNCit9DQorDQordm9p
ZCBSZXNvdXJjZUhhbmRsZTo6aW50ZXJuZXRTdGF0dXNDYWxsYmFjayhISU5URVJORVQgaW50ZXJu
ZXRIYW5kbGUsIERXT1JEX1BUUiBjb250ZXh0LCBEV09SRCBpbnRlcm5ldFN0YXR1cywNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQVk9JRCBz
dGF0dXNJbmZvcm1hdGlvbiwgRFdPUkQgc3RhdHVzSW5mb3JtYXRpb25MZW5ndGgpDQorew0KKyAg
ICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxSZXNvdXJjZUhhbmRs
ZSo+KGNvbnRleHQpOw0KKw0KKyAgICBzd2l0Y2ggKGludGVybmV0U3RhdHVzKSB7DQorICAgIGNh
c2UgSU5URVJORVRfU1RBVFVTX1JFRElSRUNUOg0KKyAgICAgICAgaGFuZGxlLT5kLT5tX3JlZGly
ZWN0VXJsID0gU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFyKj4oc3RhdHVzSW5mb3JtYXRpb24pLCBz
dGF0dXNJbmZvcm1hdGlvbkxlbmd0aCk7DQorICAgICAgICBjYWxsT25NYWluVGhyZWFkKGNhbGxP
blJlZGlyZWN0LCBoYW5kbGUpOw0KKyAgICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgSU5URVJO
RVRfU1RBVFVTX1JFUVVFU1RfQ09NUExFVEU6DQorICAgICAgICBjYWxsT25NYWluVGhyZWFkKGNh
bGxPblJlcXVlc3RDb21wbGV0ZSwgaGFuZGxlKTsNCisgICAgICAgIGJyZWFrOw0KKw0KKyAgICBk
ZWZhdWx0Og0KKyAgICAgICAgYnJlYWs7DQorICAgIH0NCit9DQorDQordm9pZCBSZXNvdXJjZUhh
bmRsZTo6b25SZWRpcmVjdCgpDQorew0KKyAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9
IGZpcnN0UmVxdWVzdCgpOw0KKyAgICBuZXdSZXF1ZXN0LnNldFVSTChLVVJMKFBhcnNlZFVSTFN0
cmluZywgZC0+bV9yZWRpcmVjdFVybCkpOw0KKw0KKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCksIFN0cmluZygp
KTsNCisNCisgICAgaWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiByZXNvdXJjZUhhbmRsZUNsaWVu
dCA9IGNsaWVudCgpKQ0KKyAgICAgICAgcmVzb3VyY2VIYW5kbGVDbGllbnQtPndpbGxTZW5kUmVx
dWVzdCh0aGlzLCBuZXdSZXF1ZXN0LCByZXNwb25zZSk7DQogfQ0KIA0KIHZvaWQgUmVzb3VyY2VI
YW5kbGU6Om9uUmVxdWVzdENvbXBsZXRlKExQQVJBTSBsUGFyYW0pDQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>