<?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>15955</bug_id>
          
          <creation_ts>2007-11-12 08:54:15 -0800</creation_ts>
          <short_desc>WebCore should use threading abstraction</short_desc>
          <delta_ts>2007-11-12 10:35: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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.4</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 Haygood">jhaygood</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>60988</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-12 08:54:15 -0800</bug_when>
    <thetext>Some code still uses pthread directly. Now that we have this fancy threading abstraction API, we should use it everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60989</commentid>
    <comment_count>1</comment_count>
      <attachid>17203</attachid>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-12 08:54:39 -0800</bug_when>
    <thetext>Created attachment 17203
Reimplements IconDatabase and SQLiteDatabase in terms of threading API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60990</commentid>
    <comment_count>2</comment_count>
      <attachid>17203</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-11-12 09:34:28 -0800</bug_when>
    <thetext>Comment on attachment 17203
Reimplements IconDatabase and SQLiteDatabase in terms of threading API

I wanted to get to this ever since we first landed the abstraction - thanks for taking it on!
I have a few nitpicks:

&gt; createThread( IconDatabase::iconDatabaseSyncThreadStart, this );  
No space inside the parens.  Occurs in a few places.

&gt; if(!m_syncThread)
Space after the if.

&gt; -#if PLATFORM(DARWIN)
&gt; -    ASSERT(pthread_main_np());
&gt; -#endif
This block of code is valuable, and I would like to see it eventually expanded to include all platforms.
The Threading abstraction doesn&apos;t yet support a &quot;getMainThreadID()&quot; so there&apos;s not (yet) a drop in replacement, so I&apos;m a little torn on what to do with it now...  Since adding such an interface would be an exercise in adding platform specific code whereas this patch is an exercise in removing it!  
I think leaving this block for now (along with the pthread.h include for DARWIN only) and filing a bug with a FIXME would be sufficient.

&gt; -#ifndef NDEBUG
&gt; -    memset(&amp;m_openingThread, 0, sizeof(pthread_t));
&gt; -#endif
It might not be critically necessary since it&apos;s debug-only code, but I&apos;d like to see the thread identifier zero&apos;ed out in the initialization list in place of this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60996</commentid>
    <comment_count>3</comment_count>
      <attachid>17206</attachid>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-12 09:52:32 -0800</bug_when>
    <thetext>Created attachment 17206
Reimplements IconDatabase and SQLiteDatabase in terms of threading API

Updated threading stuff... basically puts back the assert and sets m_openingThread to 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60997</commentid>
    <comment_count>4</comment_count>
      <attachid>17206</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-11-12 09:57:17 -0800</bug_when>
    <thetext>Comment on attachment 17206
Reimplements IconDatabase and SQLiteDatabase in terms of threading API

There&apos;s still the style-only tweaks I mentioned (re: parenthesis)

&gt; #ifndef NDEBUG
&gt;-    memset(&amp;m_openingThread, 0, sizeof(pthread_t));
&gt;+    m_openingThread = 0;
&gt; #endif

Since it&apos;s just an integral type now and we set m_openingThread(0) in the initializer list, maybe we should just remove the #ifndef NDEBUG/#endif here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60998</commentid>
    <comment_count>5</comment_count>
      <attachid>17207</attachid>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-12 10:07:06 -0800</bug_when>
    <thetext>Created attachment 17207
Reimplements IconDatabase and SQLiteDatabase in terms of threading API

Hopefully final review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60999</commentid>
    <comment_count>6</comment_count>
      <attachid>17207</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-11-12 10:08:55 -0800</bug_when>
    <thetext>Comment on attachment 17207
Reimplements IconDatabase and SQLiteDatabase in terms of threading API

Yay!  

There *is* still one style issue left -
if(!m_syncThread)
should be
if (!m_syncThread)

Otherwise looks great</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61001</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-11-12 10:35:27 -0800</bug_when>
    <thetext>Landed in r27717 with coding style tweaks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17203</attachid>
            <date>2007-11-12 08:54:39 -0800</date>
            <delta_ts>2007-11-12 09:52:32 -0800</delta_ts>
            <desc>Reimplements IconDatabase and SQLiteDatabase in terms of threading API</desc>
            <filename>database-reimplementation.patch</filename>
            <type>text/plain</type>
            <size>6364</size>
            <attacher name="Justin Haygood">jhaygood</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3NzE2KQ0KKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSwzICsxLDIwIEBADQorMjAwNy0xMS0xMiAgSnVzdGluIEhheWdvb2QgIDxqaGF5Z29v
ZEByZWFrdGl4LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIFJlaW1wbGVtZW50IHRocmVhZGluZyBmdW5jdGlvbnMgaW4gSWNvbkRh
dGFiYXNlIGFuZCBTUUxpdGVEYXRhYmFzZSBpbiB0ZXJtcyBvZiB0aGUgdGhyZWFkaW5nIGFic3Ry
YWN0aW9ucworCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJY29u
RGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6SWNvbkRh
dGFiYXNlKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpTUUxpdGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZTo6Y2xvc2UpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OnNxbGl0ZTNIYW5kbGUpOgorCiAyMDA3
LTExLTEyICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dz
IGJ1aWxkIGZpeApJbmRleDogV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCShyZXZp
c2lvbiAyNzcxNikNCisrKyBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkNCkBAIC0xLDUgKzEsNiBAQA0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgSnVzdGluIEhheWdvb2QgKGpoYXlnb29kQHJlYWt0aXguY29tKQogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw3ICs1Niw3IEBADQogI2RlZmluZSBBU1NFUlRf
Tk9UX1NZTkNfVEhSRUFEKCkgQVNTRVJUKCFtX3N5bmNUaHJlYWRSdW5uaW5nIHx8ICFJU19JQ09O
X1NZTkNfVEhSRUFEKCkpCiAKIC8vIEZvciBtZXRob2RzIHRoYXQgYXJlIG1lYW50IHRvIHN1cHBv
cnQgdGhlIHN5bmMgdGhyZWFkIE9OTFkKLSNkZWZpbmUgSVNfSUNPTl9TWU5DX1RIUkVBRCgpIHB0
aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1fc3luY1RocmVhZCkKKyNkZWZpbmUgSVNfSUNP
Tl9TWU5DX1RIUkVBRCgpIG1fc3luY1RocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkKICNkZWZpbmUg
QVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKSBBU1NFUlQoSVNfSUNPTl9TWU5DX1RIUkVBRCgpKQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzYsMTMgKzEzNywxMyBAQA0KICAgICAvLyBGb3Jt
dWxhdGUgdGhlIGZ1bGwgcGF0aCBmb3IgdGhlIGRhdGFiYXNlIGZpbGUKICAgICBtX2NvbXBsZXRl
RGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3Rv
cnksIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpOwogCi0gICAgLy8gTG9jayBoZXJlIGFzIHdl
bGwgYXMgZmlyc3QgdGhpbmcgaW4gdGhlIHRocmVhZCBzbyB0aGUgdHJlYWQgZG9lc24ndCBhY3R1
YWxseSBjb21tZW5jZSB1bnRpbCB0aGUgcHRocmVhZF9jcmVhdGUoKSBjYWxsIAorICAgIC8vIExv
Y2sgaGVyZSBhcyB3ZWxsIGFzIGZpcnN0IHRoaW5nIGluIHRoZSB0aHJlYWQgc28gdGhlIHRyZWFk
IGRvZXNuJ3QgYWN0dWFsbHkgY29tbWVuY2UgdW50aWwgdGhlIGNyZWF0ZVRocmVhZCgpIGNhbGwg
CiAgICAgLy8gY29tcGxldGVzIGFuZCBtX3N5bmNUaHJlYWRSdW5uaW5nIGlzIHByb3Blcmx5IHNl
dAogICAgIG1fc3luY0xvY2subG9jaygpOwotICAgIG1fc3luY1RocmVhZFJ1bm5pbmcgPSAhcHRo
cmVhZF9jcmVhdGUoJm1fc3luY1RocmVhZCwgTlVMTCwgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJh
c2VTeW5jVGhyZWFkU3RhcnQsIHRoaXMpOwotICAgIG1fc3luY0xvY2sudW5sb2NrKCk7Ci0KLSAg
ICByZXR1cm4gbV9zeW5jVGhyZWFkUnVubmluZzsKKyAgICBtX3N5bmNUaHJlYWQgPSBjcmVhdGVU
aHJlYWQoIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZFN0YXJ0LCB0aGlzICk7
CisgICAgaWYoIW1fc3luY1RocmVhZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB0cnVlOwogfQogCiB2b2lkIEljb25EYXRhYmFzZTo6Y2xvc2UoKQpAQCAtMTU3LDggKzE1OCw3
IEBADQogICAgICAgICB3YWtlU3luY1RocmVhZCgpOwogICAgICAgICAKICAgICAgICAgLy8gV2Fp
dCBmb3IgdGhlIHN5bmMgdGhyZWFkIHRvIHRlcm1pbmF0ZQotICAgICAgICBpZiAocHRocmVhZF9q
b2luKG1fc3luY1RocmVhZCwgTlVMTCkgPT0gRURFQURMSykKLSAgICAgICAgICAgIExPR19FUlJP
UigibV9zeW5jVGhyZWFkIHdhcyBmb3VuZCB0byBiZSBkZWFkbG9ja2VkIHRyeWluZyB0byBxdWl0
Iik7CisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fc3luY1RocmVhZCwgTlVMTCk7
CiAgICAgfQogCiAgICAgbV9zeW5jVGhyZWFkUnVubmluZyA9IGZhbHNlOyAgICAKQEAgLTc1Miw5
ICs3NTIsNiBAQA0KICAgICAsIG1faW1wb3J0ZWQoZmFsc2UpCiAgICAgLCBtX2lzSW1wb3J0ZWRT
ZXQoZmFsc2UpCiB7Ci0jaWYgUExBVEZPUk0oREFSV0lOKQotICAgIEFTU0VSVChwdGhyZWFkX21h
aW5fbnAoKSk7Ci0jZW5kaWYKIH0KIAogSWNvbkRhdGFiYXNlOjp+SWNvbkRhdGFiYXNlKCkKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCShyZXZpc2lvbiAyNzcxNikNCisrKyBX
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMSw1
ICsxLDYgQEANCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEp1c3RpbiBIYXln
b29kIChqaGF5Z29vZEByZWFrdGl4LmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTIwLDcgKzEyMSw3IEBADQogICAgIE93blB0cjxUaW1lcjxJY29uRGF0YWJhc2U+ID4g
bV9zeW5jVGltZXI7CiAgICAgdm9pZCBzeW5jVGltZXJGaXJlZChUaW1lcjxJY29uRGF0YWJhc2U+
Kik7CiAgICAgCi0gICAgcHRocmVhZF90IG1fc3luY1RocmVhZDsKKyAgICBUaHJlYWRJZGVudGlm
aWVyIG1fc3luY1RocmVhZDsKICAgICBib29sIG1fc3luY1RocmVhZFJ1bm5pbmc7CiAgICAgCiAg
ICAgSGFzaFNldDxSZWZQdHI8RG9jdW1lbnRMb2FkZXI+ID4gbV9sb2FkZXJzUGVuZGluZ0RlY2lz
aW9uOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCShyZXZp
c2lvbiAyNzcxNikNCisrKyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC0xLDUgKzEsNiBAQA0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcgSnVzdGluIEhheWdvb2QgKGpoYXlnb29kQHJlYWt0aXguY29tKQogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw5ICs0Niw2IEBADQogICAgIDogbV9kYigw
KQogICAgICwgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MoZmFsc2UpCiB7Ci0jaWZuZGVmIE5ERUJV
RwotICAgIG1lbXNldCgmbV9vcGVuaW5nVGhyZWFkLCAwLCBzaXplb2YocHRocmVhZF90KSk7Ci0j
ZW5kaWYKIH0KIAogU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRhYmFzZSgpCkBAIC03Myw3ICs3
MSw3IEBADQogCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChpc09wZW4oKSkKLSAgICAgICAgbV9v
cGVuaW5nVGhyZWFkID0gcHRocmVhZF9zZWxmKCk7CisgICAgICAgIG1fb3BlbmluZ1RocmVhZCA9
IGN1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogICAgIAogICAgIGlmICghU1FMaXRlU3RhdGVtZW50
KCp0aGlzLCAiUFJBR01BIHRlbXBfc3RvcmUgPSBNRU1PUlk7IikuZXhlY3V0ZUNvbW1hbmQoKSkK
QEAgLTkwLDcgKzg4LDcgQEANCiAgICAgICAgIG1fZGIgPSAwOwogICAgIH0KICNpZm5kZWYgTkRF
QlVHCi0gICAgbWVtc2V0KCZtX29wZW5pbmdUaHJlYWQsIDAsIHNpemVvZihwdGhyZWFkX3QpKTsK
KyAgICBtX29wZW5pbmdUaHJlYWQgPSAwOwogI2VuZGlmCiB9CiAKQEAgLTI5OCwzICsyOTYsNSBA
QA0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogCisKKwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRGF0YWJhc2UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmgJKHJldmlzaW9uIDI3NzE2KQ0KKysrIFdlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xLDUgKzEsNiBAQA0K
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSnVzdGluIEhheWdvb2QgKGpoYXln
b29kQHJlYWt0aXguY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwx
MCArMzIsNiBAQA0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKLSNpZm5kZWYgTkRFQlVHCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotI2VuZGlm
Ci0KICNpZiBDT01QSUxFUihNU1ZDKQogI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCiAj
ZW5kaWYKQEAgLTk3LDcgKzk0LDcgQEANCiAgICAgY29uc3QgY2hhciogbGFzdEVycm9yTXNnKCk7
CiAgICAgCiAgICAgc3FsaXRlMyogc3FsaXRlM0hhbmRsZSgpIGNvbnN0IHsKLSAgICAgICAgQVNT
RVJUKHB0aHJlYWRfZXF1YWwobV9vcGVuaW5nVGhyZWFkLCBwdGhyZWFkX3NlbGYoKSkpOworICAg
ICAgICBBU1NFUlQoIGN1cnJlbnRUaHJlYWQoKSA9PSBtX29wZW5pbmdUaHJlYWQgKTsKICAgICAg
ICAgcmV0dXJuIG1fZGI7CiAgICAgfQogICAgIApAQCAtMTIwLDcgKzExNyw3IEBADQogCiAgICAg
TXV0ZXggbV9sb2NraW5nTXV0ZXg7CiAjaWZuZGVmIE5ERUJVRwotICAgIHB0aHJlYWRfdCBtX29w
ZW5pbmdUaHJlYWQ7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX29wZW5pbmdUaHJlYWQ7CiAjZW5k
aWYKICAgICAKIH07IC8vIGNsYXNzIFNRTGl0ZURhdGFiYXNlCg==
</data>
<flag name="review"
          id="7334"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17206</attachid>
            <date>2007-11-12 09:52:32 -0800</date>
            <delta_ts>2007-11-12 10:07:06 -0800</delta_ts>
            <desc>Reimplements IconDatabase and SQLiteDatabase in terms of threading API</desc>
            <filename>database-reimplementation.patch</filename>
            <type>text/plain</type>
            <size>5537</size>
            <attacher name="Justin Haygood">jhaygood</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMjc3MTYp
DQorKysgV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkp
DQpAQCAtMSw1ICsxLDYgQEANCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEp1
c3RpbiBIYXlnb29kIChqaGF5Z29vZEByZWFrdGl4LmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDksMTMgKzUwLDE3IEBADQogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKERBUldJTikKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5k
aWYKKwogI2luY2x1ZGUgPGVycm5vLmg+CiAKIC8vIEZvciBtZXRob2RzIHRoYXQgYXJlIG1lYW50
IHRvIHN1cHBvcnQgQVBJIGZyb20gdGhlIG1haW4gdGhyZWFkIC0gc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgaW50ZXJuYWxseQogI2RlZmluZSBBU1NFUlRfTk9UX1NZTkNfVEhSRUFEKCkgQVNTRVJUKCFt
X3N5bmNUaHJlYWRSdW5uaW5nIHx8ICFJU19JQ09OX1NZTkNfVEhSRUFEKCkpCiAKIC8vIEZvciBt
ZXRob2RzIHRoYXQgYXJlIG1lYW50IHRvIHN1cHBvcnQgdGhlIHN5bmMgdGhyZWFkIE9OTFkKLSNk
ZWZpbmUgSVNfSUNPTl9TWU5DX1RIUkVBRCgpIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCks
IG1fc3luY1RocmVhZCkKKyNkZWZpbmUgSVNfSUNPTl9TWU5DX1RIUkVBRCgpIG1fc3luY1RocmVh
ZCA9PSBjdXJyZW50VGhyZWFkKCkKICNkZWZpbmUgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKSBB
U1NFUlQoSVNfSUNPTl9TWU5DX1RIUkVBRCgpKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MzYsMTMgKzE0MSwxMyBAQA0KICAgICAvLyBGb3JtdWxhdGUgdGhlIGZ1bGwgcGF0aCBmb3IgdGhl
IGRhdGFiYXNlIGZpbGUKICAgICBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnksIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1l
KCkpOwogCi0gICAgLy8gTG9jayBoZXJlIGFzIHdlbGwgYXMgZmlyc3QgdGhpbmcgaW4gdGhlIHRo
cmVhZCBzbyB0aGUgdHJlYWQgZG9lc24ndCBhY3R1YWxseSBjb21tZW5jZSB1bnRpbCB0aGUgcHRo
cmVhZF9jcmVhdGUoKSBjYWxsIAorICAgIC8vIExvY2sgaGVyZSBhcyB3ZWxsIGFzIGZpcnN0IHRo
aW5nIGluIHRoZSB0aHJlYWQgc28gdGhlIHRyZWFkIGRvZXNuJ3QgYWN0dWFsbHkgY29tbWVuY2Ug
dW50aWwgdGhlIGNyZWF0ZVRocmVhZCgpIGNhbGwgCiAgICAgLy8gY29tcGxldGVzIGFuZCBtX3N5
bmNUaHJlYWRSdW5uaW5nIGlzIHByb3Blcmx5IHNldAogICAgIG1fc3luY0xvY2subG9jaygpOwot
ICAgIG1fc3luY1RocmVhZFJ1bm5pbmcgPSAhcHRocmVhZF9jcmVhdGUoJm1fc3luY1RocmVhZCwg
TlVMTCwgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQsIHRoaXMpOwot
ICAgIG1fc3luY0xvY2sudW5sb2NrKCk7Ci0KLSAgICByZXR1cm4gbV9zeW5jVGhyZWFkUnVubmlu
ZzsKKyAgICBtX3N5bmNUaHJlYWQgPSBjcmVhdGVUaHJlYWQoIEljb25EYXRhYmFzZTo6aWNvbkRh
dGFiYXNlU3luY1RocmVhZFN0YXJ0LCB0aGlzICk7CisgICAgaWYoIW1fc3luY1RocmVhZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEljb25EYXRh
YmFzZTo6Y2xvc2UoKQpAQCAtMTU3LDggKzE2Miw3IEBADQogICAgICAgICB3YWtlU3luY1RocmVh
ZCgpOwogICAgICAgICAKICAgICAgICAgLy8gV2FpdCBmb3IgdGhlIHN5bmMgdGhyZWFkIHRvIHRl
cm1pbmF0ZQotICAgICAgICBpZiAocHRocmVhZF9qb2luKG1fc3luY1RocmVhZCwgTlVMTCkgPT0g
RURFQURMSykKLSAgICAgICAgICAgIExPR19FUlJPUigibV9zeW5jVGhyZWFkIHdhcyBmb3VuZCB0
byBiZSBkZWFkbG9ja2VkIHRyeWluZyB0byBxdWl0Iik7CisgICAgICAgIHdhaXRGb3JUaHJlYWRD
b21wbGV0aW9uKG1fc3luY1RocmVhZCwgTlVMTCk7CiAgICAgfQogCiAgICAgbV9zeW5jVGhyZWFk
UnVubmluZyA9IGZhbHNlOyAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5o
CShyZXZpc2lvbiAyNzcxNikNCisrKyBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtMSw1ICsxLDYgQEANCiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3IEp1c3RpbiBIYXlnb29kIChqaGF5Z29vZEByZWFrdGl4LmNvbSkKICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIwLDcgKzEyMSw3IEBADQogICAgIE93blB0
cjxUaW1lcjxJY29uRGF0YWJhc2U+ID4gbV9zeW5jVGltZXI7CiAgICAgdm9pZCBzeW5jVGltZXJG
aXJlZChUaW1lcjxJY29uRGF0YWJhc2U+Kik7CiAgICAgCi0gICAgcHRocmVhZF90IG1fc3luY1Ro
cmVhZDsKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fc3luY1RocmVhZDsKICAgICBib29sIG1fc3lu
Y1RocmVhZFJ1bm5pbmc7CiAgICAgCiAgICAgSGFzaFNldDxSZWZQdHI8RG9jdW1lbnRMb2FkZXI+
ID4gbV9sb2FkZXJzUGVuZGluZ0RlY2lzaW9uOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyNzcxNikNCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xLDUgKzEsNiBAQA0K
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSnVzdGluIEhheWdvb2QgKGpoYXln
b29kQHJlYWt0aXguY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCwx
MCArNDUsOCBAQA0KIFNRTGl0ZURhdGFiYXNlOjpTUUxpdGVEYXRhYmFzZSgpCiAgICAgOiBtX2Ri
KDApCiAgICAgLCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyhmYWxzZSkKKyAgICAsIG1fb3Blbmlu
Z1RocmVhZCgwKQogewotI2lmbmRlZiBOREVCVUcKLSAgICBtZW1zZXQoJm1fb3BlbmluZ1RocmVh
ZCwgMCwgc2l6ZW9mKHB0aHJlYWRfdCkpOwotI2VuZGlmCiB9CiAKIFNRTGl0ZURhdGFiYXNlOjp+
U1FMaXRlRGF0YWJhc2UoKQpAQCAtNzMsNyArNzIsNyBAQA0KIAogI2lmbmRlZiBOREVCVUcKICAg
ICBpZiAoaXNPcGVuKCkpCi0gICAgICAgIG1fb3BlbmluZ1RocmVhZCA9IHB0aHJlYWRfc2VsZigp
OworICAgICAgICBtX29wZW5pbmdUaHJlYWQgPSBjdXJyZW50VGhyZWFkKCk7CiAjZW5kaWYKICAg
ICAKICAgICBpZiAoIVNRTGl0ZVN0YXRlbWVudCgqdGhpcywgIlBSQUdNQSB0ZW1wX3N0b3JlID0g
TUVNT1JZOyIpLmV4ZWN1dGVDb21tYW5kKCkpCkBAIC05MCw3ICs4OSw3IEBADQogICAgICAgICBt
X2RiID0gMDsKICAgICB9CiAjaWZuZGVmIE5ERUJVRwotICAgIG1lbXNldCgmbV9vcGVuaW5nVGhy
ZWFkLCAwLCBzaXplb2YocHRocmVhZF90KSk7CisgICAgbV9vcGVuaW5nVGhyZWFkID0gMDsKICNl
bmRpZgogfQogCkBAIC0yOTgsMyArMjk3LDUgQEANCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
IAorCisKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCShyZXZpc2lv
biAyNzcxNikNCisrKyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMSw1ICsxLDYgQEANCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEp1c3RpbiBIYXlnb29kIChqaGF5Z29vZEByZWFrdGl4LmNvbSkKICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTAgKzMyLDYgQEANCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWZuZGVmIE5ERUJVRwot
I2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNlbmRpZgotCiAjaWYgQ09NUElMRVIoTVNWQykKICNwcmFn
bWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQogI2VuZGlmCkBAIC05Nyw3ICs5NCw3IEBADQogICAg
IGNvbnN0IGNoYXIqIGxhc3RFcnJvck1zZygpOwogICAgIAogICAgIHNxbGl0ZTMqIHNxbGl0ZTNI
YW5kbGUoKSBjb25zdCB7Ci0gICAgICAgIEFTU0VSVChwdGhyZWFkX2VxdWFsKG1fb3BlbmluZ1Ro
cmVhZCwgcHRocmVhZF9zZWxmKCkpKTsKKyAgICAgICAgQVNTRVJUKCBjdXJyZW50VGhyZWFkKCkg
PT0gbV9vcGVuaW5nVGhyZWFkICk7CiAgICAgICAgIHJldHVybiBtX2RiOwogICAgIH0KICAgICAK
QEAgLTEyMCw3ICsxMTcsNyBAQA0KIAogICAgIE11dGV4IG1fbG9ja2luZ011dGV4OwogI2lmbmRl
ZiBOREVCVUcKLSAgICBwdGhyZWFkX3QgbV9vcGVuaW5nVGhyZWFkOworICAgIFRocmVhZElkZW50
aWZpZXIgbV9vcGVuaW5nVGhyZWFkOwogI2VuZGlmCiAgICAgCiB9OyAvLyBjbGFzcyBTUUxpdGVE
YXRhYmFzZQo=
</data>
<flag name="review"
          id="7335"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17207</attachid>
            <date>2007-11-12 10:07:06 -0800</date>
            <delta_ts>2007-11-12 10:08:55 -0800</delta_ts>
            <desc>Reimplements IconDatabase and SQLiteDatabase in terms of threading API</desc>
            <filename>database-reimplementation.patch</filename>
            <type>text/plain</type>
            <size>5623</size>
            <attacher name="Justin Haygood">jhaygood</attacher>
            
              <data encoding="base64">SW5kZXg6IGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyNzcxNikNCisrKyBsb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMSw1ICsxLDYgQEANCiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEp1c3RpbiBIYXlnb29kIChqaGF5Z29vZEBy
ZWFrdGl4LmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDksMTMgKzUw
LDE3IEBADQogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKERB
UldJTikKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPGVycm5vLmg+
CiAKIC8vIEZvciBtZXRob2RzIHRoYXQgYXJlIG1lYW50IHRvIHN1cHBvcnQgQVBJIGZyb20gdGhl
IG1haW4gdGhyZWFkIC0gc2hvdWxkIG5vdCBiZSBjYWxsZWQgaW50ZXJuYWxseQogI2RlZmluZSBB
U1NFUlRfTk9UX1NZTkNfVEhSRUFEKCkgQVNTRVJUKCFtX3N5bmNUaHJlYWRSdW5uaW5nIHx8ICFJ
U19JQ09OX1NZTkNfVEhSRUFEKCkpCiAKIC8vIEZvciBtZXRob2RzIHRoYXQgYXJlIG1lYW50IHRv
IHN1cHBvcnQgdGhlIHN5bmMgdGhyZWFkIE9OTFkKLSNkZWZpbmUgSVNfSUNPTl9TWU5DX1RIUkVB
RCgpIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1fc3luY1RocmVhZCkKKyNkZWZpbmUg
SVNfSUNPTl9TWU5DX1RIUkVBRCgpIG1fc3luY1RocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkKICNk
ZWZpbmUgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKSBBU1NFUlQoSVNfSUNPTl9TWU5DX1RIUkVB
RCgpKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzYsMTMgKzE0MSwxMyBAQA0KICAgICAv
LyBGb3JtdWxhdGUgdGhlIGZ1bGwgcGF0aCBmb3IgdGhlIGRhdGFiYXNlIGZpbGUKICAgICBtX2Nv
bXBsZXRlRGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VE
aXJlY3RvcnksIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpOwogCi0gICAgLy8gTG9jayBoZXJl
IGFzIHdlbGwgYXMgZmlyc3QgdGhpbmcgaW4gdGhlIHRocmVhZCBzbyB0aGUgdHJlYWQgZG9lc24n
dCBhY3R1YWxseSBjb21tZW5jZSB1bnRpbCB0aGUgcHRocmVhZF9jcmVhdGUoKSBjYWxsIAorICAg
IC8vIExvY2sgaGVyZSBhcyB3ZWxsIGFzIGZpcnN0IHRoaW5nIGluIHRoZSB0aHJlYWQgc28gdGhl
IHRocmVhZCBkb2Vzbid0IGFjdHVhbGx5IGNvbW1lbmNlIHVudGlsIHRoZSBjcmVhdGVUaHJlYWQo
KSBjYWxsIAogICAgIC8vIGNvbXBsZXRlcyBhbmQgbV9zeW5jVGhyZWFkUnVubmluZyBpcyBwcm9w
ZXJseSBzZXQKICAgICBtX3N5bmNMb2NrLmxvY2soKTsKLSAgICBtX3N5bmNUaHJlYWRSdW5uaW5n
ID0gIXB0aHJlYWRfY3JlYXRlKCZtX3N5bmNUaHJlYWQsIE5VTEwsIEljb25EYXRhYmFzZTo6aWNv
bkRhdGFiYXNlU3luY1RocmVhZFN0YXJ0LCB0aGlzKTsKLSAgICBtX3N5bmNMb2NrLnVubG9jaygp
OwotCi0gICAgcmV0dXJuIG1fc3luY1RocmVhZFJ1bm5pbmc7CisgICAgbV9zeW5jVGhyZWFkID0g
Y3JlYXRlVGhyZWFkKEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZFN0YXJ0LCB0
aGlzKTsKKyAgICBpZighbV9zeW5jVGhyZWFkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgSWNvbkRhdGFiYXNlOjpjbG9zZSgpCkBAIC0xNTcsOCAr
MTYyLDcgQEANCiAgICAgICAgIHdha2VTeW5jVGhyZWFkKCk7CiAgICAgICAgIAogICAgICAgICAv
LyBXYWl0IGZvciB0aGUgc3luYyB0aHJlYWQgdG8gdGVybWluYXRlCi0gICAgICAgIGlmIChwdGhy
ZWFkX2pvaW4obV9zeW5jVGhyZWFkLCBOVUxMKSA9PSBFREVBRExLKQotICAgICAgICAgICAgTE9H
X0VSUk9SKCJtX3N5bmNUaHJlYWQgd2FzIGZvdW5kIHRvIGJlIGRlYWRsb2NrZWQgdHJ5aW5nIHRv
IHF1aXQiKTsKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9zeW5jVGhyZWFkLCBO
VUxMKTsKICAgICB9CiAKICAgICBtX3N5bmNUaHJlYWRSdW5uaW5nID0gZmFsc2U7ICAgIApJbmRl
eDogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaAkocmV2aXNpb24gMjc3MTYpDQorKysgbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xLDUgKzEsNiBAQA0KIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgSnVzdGluIEhheWdvb2QgKGpoYXlnb29kQHJlYWt0aXguY29t
KQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjAsNyArMTIxLDcgQEANCiAg
ICAgT3duUHRyPFRpbWVyPEljb25EYXRhYmFzZT4gPiBtX3N5bmNUaW1lcjsKICAgICB2b2lkIHN5
bmNUaW1lckZpcmVkKFRpbWVyPEljb25EYXRhYmFzZT4qKTsKICAgICAKLSAgICBwdGhyZWFkX3Qg
bV9zeW5jVGhyZWFkOworICAgIFRocmVhZElkZW50aWZpZXIgbV9zeW5jVGhyZWFkOwogICAgIGJv
b2wgbV9zeW5jVGhyZWFkUnVubmluZzsKICAgICAKICAgICBIYXNoU2V0PFJlZlB0cjxEb2N1bWVu
dExvYWRlcj4gPiBtX2xvYWRlcnNQZW5kaW5nRGVjaXNpb247CkluZGV4OiBwbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gcGxhdGZvcm0vc3FsL1NRTGl0ZURh
dGFiYXNlLmNwcAkocmV2aXNpb24gMjc3MTYpDQorKysgcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTEsNSArMSw2IEBADQogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNyBKdXN0aW4gSGF5Z29vZCAoamhheWdvb2RAcmVha3RpeC5jb20p
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEwICs0NSw4IEBADQogU1FM
aXRlRGF0YWJhc2U6OlNRTGl0ZURhdGFiYXNlKCkKICAgICA6IG1fZGIoMCkKICAgICAsIG1fdHJh
bnNhY3Rpb25JblByb2dyZXNzKGZhbHNlKQorICAgICwgbV9vcGVuaW5nVGhyZWFkKDApCiB7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIG1lbXNldCgmbV9vcGVuaW5nVGhyZWFkLCAwLCBzaXplb2YocHRo
cmVhZF90KSk7Ci0jZW5kaWYKIH0KIAogU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRhYmFzZSgp
CkBAIC03MSwxMCArNzAsOCBAQA0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotI2lm
bmRlZiBOREVCVUcKICAgICBpZiAoaXNPcGVuKCkpCi0gICAgICAgIG1fb3BlbmluZ1RocmVhZCA9
IHB0aHJlYWRfc2VsZigpOwotI2VuZGlmCisgICAgICAgIG1fb3BlbmluZ1RocmVhZCA9IGN1cnJl
bnRUaHJlYWQoKTsKICAgICAKICAgICBpZiAoIVNRTGl0ZVN0YXRlbWVudCgqdGhpcywgIlBSQUdN
QSB0ZW1wX3N0b3JlID0gTUVNT1JZOyIpLmV4ZWN1dGVDb21tYW5kKCkpCiAgICAgICAgIExPR19F
UlJPUigiU1FMaXRlIGRhdGFiYXNlIGNvdWxkIG5vdCBzZXQgdGVtcF9zdG9yZSB0byBtZW1vcnki
KTsKQEAgLTg5LDkgKzg2LDkgQEANCiAgICAgICAgIG1fcGF0aC50cnVuY2F0ZSgwKTsKICAgICAg
ICAgbV9kYiA9IDA7CiAgICAgfQotI2lmbmRlZiBOREVCVUcKLSAgICBtZW1zZXQoJm1fb3Blbmlu
Z1RocmVhZCwgMCwgc2l6ZW9mKHB0aHJlYWRfdCkpOwotI2VuZGlmCisKKyAgICBtX29wZW5pbmdU
aHJlYWQgPSAwOworCiB9CiAKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEZ1bGxzeW5jKGJvb2wg
ZnN5bmMpIApAQCAtMjk4LDMgKzI5NSw1IEBADQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAK
KworCkluZGV4OiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCShyZXZpc2lvbiAyNzcxNikNCisrKyBwbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQ0KQEAgLTEsNSArMSw2IEBA
DQogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBKdXN0aW4gSGF5Z29vZCAoamhh
eWdvb2RAcmVha3RpeC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDEwICszMiw2IEBADQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAotI2lmbmRlZiBOREVCVUcKLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jZW5k
aWYKLQogI2lmIENPTVBJTEVSKE1TVkMpCiAjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkK
ICNlbmRpZgpAQCAtOTcsNyArOTQsNyBAQA0KICAgICBjb25zdCBjaGFyKiBsYXN0RXJyb3JNc2co
KTsKICAgICAKICAgICBzcWxpdGUzKiBzcWxpdGUzSGFuZGxlKCkgY29uc3QgewotICAgICAgICBB
U1NFUlQocHRocmVhZF9lcXVhbChtX29wZW5pbmdUaHJlYWQsIHB0aHJlYWRfc2VsZigpKSk7Cisg
ICAgICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcGVuaW5nVGhyZWFkKTsKICAgICAg
ICAgcmV0dXJuIG1fZGI7CiAgICAgfQogICAgIApAQCAtMTIwLDcgKzExNyw3IEBADQogCiAgICAg
TXV0ZXggbV9sb2NraW5nTXV0ZXg7CiAjaWZuZGVmIE5ERUJVRwotICAgIHB0aHJlYWRfdCBtX29w
ZW5pbmdUaHJlYWQ7CisgICAgVGhyZWFkSWRlbnRpZmllciBtX29wZW5pbmdUaHJlYWQ7CiAjZW5k
aWYKICAgICAKIH07IC8vIGNsYXNzIFNRTGl0ZURhdGFiYXNlCg==
</data>
<flag name="review"
          id="7336"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>