<?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>23245</bug_id>
          
          <creation_ts>2009-01-11 14:44:04 -0800</creation_ts>
          <short_desc>REGRESSION: Use of JavaScriptCore C API without using WebKit leads to immediate crash inside JSC::Identifier::add</short_desc>
          <delta_ts>2009-01-11 23:38:49 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Rowe (bdash)">mrowe</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>ap</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>105273</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-01-11 14:44:04 -0800</bug_when>
    <thetext>#include &lt;JavaScriptCore/JavaScriptCore.h&gt;

int main(int argc, char **argv)
{
    JSGlobalContextRef context = JSGlobalContextCreate(0);
    return 0;
}

running this against TOT crashes inside JSC::Identifier::add when calling UString::Rep::null().hash();, as the data used by UString::Rep::null() has not been initialized</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105275</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-01-11 14:51:20 -0800</bug_when>
    <thetext>Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x0000000c
0x004bda64 in JSC::UString::Rep::hash (this=0x0) at UString.h:96
96	            unsigned hash() const { if (_hash == 0) _hash = computeHash(data(), len); return _hash; }
(gdb) bt
#0  0x004bda64 in JSC::UString::Rep::hash (this=0x0) at UString.h:96
#1  0x0047d664 in JSC::Identifier::add (globalData=0x1009800, c=0x0) at Identifier.cpp:127
#2  0x00507f9f in JSC::Identifier::Identifier (this=0x904ad0, globalData=0x1009800, s=0x0) at Identifier.h:41
#3  0x0048388a in JSC::CommonIdentifiers::CommonIdentifiers (this=0x904ad0, globalData=0x1009800) at CommonIdentifiers.cpp:34
#4  0x00569e81 in JSC::JSGlobalData::JSGlobalData (this=0x1009800, isShared=true) at JavaScriptCore/runtime/JSGlobalData.cpp:94
#5  0x00569ff6 in JSC::JSGlobalData::sharedInstance () at JavaScriptCore/runtime/JSGlobalData.cpp:169
#6  0x00566635 in JSGlobalContextCreate (globalObjectClass=0x0) at JavaScriptCore/API/JSContextRef.cpp:72
#7  0x00001ff4 in main (argc=1, argv=0xbffff860) at test.c:5


Looks like perhaps JSGlobalContextCreate needs to call initializeThreading() before calling JSGlobalData::sharedInstance().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105277</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-01-11 14:57:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/6488045&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105294</commentid>
    <comment_count>3</comment_count>
      <attachid>26622</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-11 20:38:08 -0800</bug_when>
    <thetext>Created attachment 26622
Fix for bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105295</commentid>
    <comment_count>4</comment_count>
      <attachid>26622</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-11 21:10:39 -0800</bug_when>
    <thetext>Comment on attachment 26622
Fix for bug.

I think it&apos;s subtle and non-obvious that OpaqueJSString::ustring is a suitable bottleneck, yet OpaqueJSString::identifier, a function with a nearly identical purpose, doesn&apos;t need the initializeThreading call. I think it might be better to initialize in the individual JSStringCreate functions, even though there are many of them, because the subtle relationship between the external functions and the reason OpaqueJSString has initialization inside it is very likely to get broken in the future even though it&apos;s fine right now.

You missed JSGlobalContextCreateInGroup, which can take NULL for the group.

prepare-ChangeLog somehow missed JSGlobalContextCreate, because it&apos;s not listed in your change log.

I&apos;m going to say review- because you missed JSGlobalContextCreateInGroup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105297</commentid>
    <comment_count>5</comment_count>
      <attachid>26623</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-11 21:34:27 -0800</bug_when>
    <thetext>Created attachment 26623
Patch for bug.

I put the init in the JSString api where it creates the JSStringRef.

About JSGlobalContextCreateInGroup, I likely would have missed it (because of its ability to take NULL), but fortunately the init call was already there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105298</commentid>
    <comment_count>6</comment_count>
      <attachid>26624</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-11 21:38:20 -0800</bug_when>
    <thetext>Created attachment 26624
Patch with the comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105299</commentid>
    <comment_count>7</comment_count>
      <attachid>26624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-11 21:41:11 -0800</bug_when>
    <thetext>Comment on attachment 26624
Patch with the comments addressed.

Oh, I am so evil. I told you to move it into JSStringCreate functions, *knowing* you&apos;d probably missing JSStringCreateWithBSTR. But did I say anything? No! So I made you take a perfectly good, working patch, and ruin it.

review-, but I&apos;m sure it will take you like 10 seconds to fix it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105301</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-11 21:51:42 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 26624 [review])
&gt; Oh, I am so evil. I told you to move it into JSStringCreate functions,
&gt; *knowing* you&apos;d probably missing JSStringCreateWithBSTR. But did I say
&gt; anything? No! So I made you take a perfectly good, working patch, and ruin it.
&gt; 
&gt; review-, but I&apos;m sure it will take you like 10 seconds to fix it
&gt; 

Actually, I did look at them. :)

  * JSStringCreateWithBSTR just calls JSStringCreateWithCharacters (which has the init function).
Is it too tricky to rely on that?

  * JSStringCopyBSTR takes a JSStringRef so it doesn&apos;t need a call to the init function.




</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105302</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-11 22:00:14 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt;   * JSStringCreateWithBSTR just calls JSStringCreateWithCharacters (which has
&gt; the init function).
&gt; Is it too tricky to rely on that?

No. I don&apos;t know why the others don&apos;t work that way. It&apos;s better!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105303</commentid>
    <comment_count>10</comment_count>
      <attachid>26624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-11 22:00:24 -0800</bug_when>
    <thetext>Comment on attachment 26624
Patch with the comments addressed.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105304</commentid>
    <comment_count>11</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-01-11 22:02:22 -0800</bug_when>
    <thetext>fwiw, the bstr api worries me a little bit.  BSTR are a windows construct (ole automation), so this is a windows api.  However, initializeThreading is only threadsafe on OSX.  I guess these string apis could be called on any thread which would be trouble on Windows.

It may help to know when these apis are called.  Is it just there for Apple products that run on windows (and they&apos;ll call something on the main thread that initializes this)?  Or do I need to be more concerned about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105307</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-11 23:38:49 -0800</bug_when>
    <thetext>Committed revision 39817.

It isn&apos;t all that important for a pure JS API client to have a correct main thread identifier (it&apos;s needed for WTF MainThread functionality, which is not reachable via API). There could be problems if a client first uses JSC from secondary thread, and later uses WebCore from main thread. So, there are improvements to be made, but the issue is not too horrible.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26622</attachid>
            <date>2009-01-11 20:38:08 -0800</date>
            <delta_ts>2009-01-11 21:34:27 -0800</delta_ts>
            <desc>Fix for bug.</desc>
            <filename>patch-for-bug23245.txt</filename>
            <type>text/plain</type>
            <size>3490</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggNDBjNDVkMy4uYzMzMTE3OSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUoKQog
eworICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICByZXR1cm4gdG9SZWYoSlNHbG9iYWxE
YXRhOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCkpOwogfQogCkBAIC02MCw2ICs2MSw3IEBAIHZvaWQg
SlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKQogCiBKU0dsb2Jh
bENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0
Q2xhc3MpCiB7CisgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogI2lmIFBMQVRGT1JNKERBUldJ
TikKICAgICAvLyBXaGVuIHJ1bm5pbmcgb24gVGlnZXIgb3IgTGVvcGFyZCwgb3IgaWYgdGhlIGFw
cGxpY2F0aW9uIHdhcyBsaW5rZWQgYmVmb3JlIEpTR2xvYmFsQ29udGV4dENyZWF0ZSB3YXMgY2hh
bmdlZAogICAgIC8vIHRvIHVzZSBhIHVuaXF1ZSBKU0dsb2JhbERhdGEsIHdlIHVzZSBhIHNoYXJl
ZCBvbmUgZm9yIGNvbXBhdGliaWxpdHkuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwIGIvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRl
eCBjMDhiOGIwLi42YzE0ZjJkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWYuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJ
bml0aWFsaXplVGhyZWFkaW5nLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgpA
QCAtNTIsNiArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBKU0NsYXNzUmVmIEpTQ2xh
c3NDcmVhdGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24pCiB7CisgICAgaW5p
dGlhbGl6ZVRocmVhZGluZygpOwogICAgIFJlZlB0cjxPcGFxdWVKU0NsYXNzPiBqc0NsYXNzID0g
KGRlZmluaXRpb24tPmF0dHJpYnV0ZXMgJiBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJv
dG90eXBlKQogICAgICAgICA/IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZU5vQXV0b21hdGljUHJvdG90
eXBlKGRlZmluaXRpb24pCiAgICAgICAgIDogT3BhcXVlSlNDbGFzczo6Y3JlYXRlKGRlZmluaXRp
b24pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwIGIv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4IDY1ZWRkMDkuLjlmYTQ2
NDAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
SlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5n
KQogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKDAs
IDApLnJlbGVhc2VSZWYoKTsKICAgICB9Ci0gICAgfQorfQogCiBDRlN0cmluZ1JlZiBKU1N0cmlu
Z0NvcHlDRlN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvYywgSlNTdHJpbmdSZWYgc3RyaW5nKQog
ewpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmluZy5jcHAKaW5kZXggN2M3YjFhZi4uMmI3M2Yy
ZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3BhcXVlSlNTdHJpbmcuaCIKIAorI2lu
Y2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxs
RnJhbWUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9JZGVudGlmaWVyLmg+CkBAIC00MSw2ICs0Miw3IEBAIFBhc3NSZWZQdHI8T3BhcXVl
SlNTdHJpbmc+IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUoY29uc3QgVVN0cmluZyYgdXN0cmluZykK
IAogVVN0cmluZyBPcGFxdWVKU1N0cmluZzo6dXN0cmluZygpIGNvbnN0CiB7CisgICAgaW5pdGlh
bGl6ZVRocmVhZGluZygpOwogICAgIGlmICh0aGlzICYmIG1fY2hhcmFjdGVycykKICAgICAgICAg
cmV0dXJuIFVTdHJpbmcobV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCwgdHJ1ZSk7CiAgICAgcmV0dXJu
IFVTdHJpbmc6Om51bGwoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBi
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3OTE3NzgxLi5iOWYyZGJiIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMDEtMTEgIERhdmlkIExldmluICA8bGV2aW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0NQorCisgICAg
ICAgIEFkZCBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGtleSBwbGFjZXMgaW4gSlMgQVBJIHRvIGVu
c3VyZSB0aGF0CisgICAgICAgIFVTdHJpbmcgaXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dEdyb3VwQ3Jl
YXRlKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNDbGFzc0Ny
ZWF0ZSk6CisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIEFQSS9PcGFxdWVKU1N0cmluZy5jcHA6
CisgICAgICAgIChPcGFxdWVKU1N0cmluZzo6dXN0cmluZyk6CisKIDIwMDktMDEtMTEgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KEJ1aWxkIGZpeCkuCg==
</data>
<flag name="review"
          id="12661"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26623</attachid>
            <date>2009-01-11 21:34:27 -0800</date>
            <delta_ts>2009-01-11 21:38:20 -0800</delta_ts>
            <desc>Patch for bug.</desc>
            <filename>patch-for-bug23245.txt</filename>
            <type>text/plain</type>
            <size>4059</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggNDBjNDVkMy4uYzMzMTE3OSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUoKQog
eworICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICByZXR1cm4gdG9SZWYoSlNHbG9iYWxE
YXRhOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCkpOwogfQogCkBAIC02MCw2ICs2MSw3IEBAIHZvaWQg
SlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKQogCiBKU0dsb2Jh
bENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0
Q2xhc3MpCiB7CisgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogI2lmIFBMQVRGT1JNKERBUldJ
TikKICAgICAvLyBXaGVuIHJ1bm5pbmcgb24gVGlnZXIgb3IgTGVvcGFyZCwgb3IgaWYgdGhlIGFw
cGxpY2F0aW9uIHdhcyBsaW5rZWQgYmVmb3JlIEpTR2xvYmFsQ29udGV4dENyZWF0ZSB3YXMgY2hh
bmdlZAogICAgIC8vIHRvIHVzZSBhIHVuaXF1ZSBKU0dsb2JhbERhdGEsIHdlIHVzZSBhIHNoYXJl
ZCBvbmUgZm9yIGNvbXBhdGliaWxpdHkuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwIGIvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRl
eCBjMDhiOGIwLi42YzE0ZjJkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWYuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJ
bml0aWFsaXplVGhyZWFkaW5nLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgpA
QCAtNTIsNiArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBKU0NsYXNzUmVmIEpTQ2xh
c3NDcmVhdGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24pCiB7CisgICAgaW5p
dGlhbGl6ZVRocmVhZGluZygpOwogICAgIFJlZlB0cjxPcGFxdWVKU0NsYXNzPiBqc0NsYXNzID0g
KGRlZmluaXRpb24tPmF0dHJpYnV0ZXMgJiBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJv
dG90eXBlKQogICAgICAgICA/IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZU5vQXV0b21hdGljUHJvdG90
eXBlKGRlZmluaXRpb24pCiAgICAgICAgIDogT3BhcXVlSlNDbGFzczo6Y3JlYXRlKGRlZmluaXRp
b24pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKaW5kZXggNjQ1MmZmYy4uOGUyMzZlNCAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdSZWYuaCIKIAorI2luY2x1ZGUgIkluaXRp
YWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJPcGFxdWVKU1N0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi91bmljb2RlL1VURjguaD4KIApAQCAtMzQsMTEgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY6OlVuaWNvZGU7CiAKIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoY29uc3QgSlNDaGFyKiBjaGFycywgc2l6ZV90IG51bUNoYXJzKQogeworICAgIGluaXRpYWxp
emVUaHJlYWRpbmcoKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShjaGFycywg
bnVtQ2hhcnMpLnJlbGVhc2VSZWYoKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQogeworICAgIGluaXRpYWxpemVUaHJl
YWRpbmcoKTsKICAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJs
ZW4oc3RyaW5nKTsKICAgICAgICAgVmVjdG9yPFVDaGFyLCAxMDI0PiBidWZmZXIobGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAppbmRleCA2NWVkZDA5Li4yYjhmZDllIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiSlNTdHJpbmdSZWZDRi5oIgogCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ1JlZi5oIgogI2luY2x1
ZGUgIk9wYXF1ZUpTU3RyaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CkBAIC0z
NSw2ICszNiw3IEBACiAKIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENG
U3RyaW5nUmVmIHN0cmluZykKIHsKKyAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAg
ICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7CiAgICAgaWYgKGxl
bmd0aCkgewogICAgICAgICBPd25BcnJheVB0cjxVbmlDaGFyPiBidWZmZXIobmV3IFVuaUNoYXJb
bGVuZ3RoXSk7CkBAIC00NCw3ICs0Niw3IEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKICAgICB9IGVsc2UgewogICAgICAgICByZXR1
cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZSgwLCAwKS5yZWxlYXNlUmVmKCk7CiAgICAgfQotICAg
IH0KK30KIAogQ0ZTdHJpbmdSZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYg
YWxsb2MsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3OTE3NzgxLi42ZGVi
ZDU2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDEtMTEgIERhdmlkIExldmlu
ICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI0NQorCisgICAgICAgIEFkZCBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGtleSBwbGFjZXMgaW4g
SlMgQVBJIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIFVTdHJpbmcgaXMgcHJvcGVybHkgaW5pdGlh
bGl6ZWQuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29u
dGV4dEdyb3VwQ3JlYXRlKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAg
ICAoSlNDbGFzc0NyZWF0ZSk6CisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmLmNwcDoKKyAgICAg
ICAgKEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMpOgorICAgICAgICAoSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcpOgorICAgICAgICAqIEFQSS9KU1N0cmluZ1JlZkNGLmNwcDoKKyAg
ICAgICAgKEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKToKKwogMjAwOS0wMS0xMSAgT2xpdmVy
IEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
QnVpbGQgZml4KS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26624</attachid>
            <date>2009-01-11 21:38:20 -0800</date>
            <delta_ts>2009-01-11 22:00:24 -0800</delta_ts>
            <desc>Patch with the comments addressed.</desc>
            <filename>patch-for-bug23245.txt</filename>
            <type>text/plain</type>
            <size>4093</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwIGIvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggNDBjNDVkMy4uYzMzMTE3OSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKKysrIGIvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUoKQog
eworICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICByZXR1cm4gdG9SZWYoSlNHbG9iYWxE
YXRhOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCkpOwogfQogCkBAIC02MCw2ICs2MSw3IEBAIHZvaWQg
SlNDb250ZXh0R3JvdXBSZWxlYXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKQogCiBKU0dsb2Jh
bENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0Q3JlYXRlKEpTQ2xhc3NSZWYgZ2xvYmFsT2JqZWN0
Q2xhc3MpCiB7CisgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogI2lmIFBMQVRGT1JNKERBUldJ
TikKICAgICAvLyBXaGVuIHJ1bm5pbmcgb24gVGlnZXIgb3IgTGVvcGFyZCwgb3IgaWYgdGhlIGFw
cGxpY2F0aW9uIHdhcyBsaW5rZWQgYmVmb3JlIEpTR2xvYmFsQ29udGV4dENyZWF0ZSB3YXMgY2hh
bmdlZAogICAgIC8vIHRvIHVzZSBhIHVuaXF1ZSBKU0dsb2JhbERhdGEsIHdlIHVzZSBhIHNoYXJl
ZCBvbmUgZm9yIGNvbXBhdGliaWxpdHkuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwIGIvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRl
eCBjMDhiOGIwLi42YzE0ZjJkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWYuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJ
bml0aWFsaXplVGhyZWFkaW5nLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgpA
QCAtNTIsNiArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBKU0NsYXNzUmVmIEpTQ2xh
c3NDcmVhdGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24pCiB7CisgICAgaW5p
dGlhbGl6ZVRocmVhZGluZygpOwogICAgIFJlZlB0cjxPcGFxdWVKU0NsYXNzPiBqc0NsYXNzID0g
KGRlZmluaXRpb24tPmF0dHJpYnV0ZXMgJiBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJv
dG90eXBlKQogICAgICAgICA/IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZU5vQXV0b21hdGljUHJvdG90
eXBlKGRlZmluaXRpb24pCiAgICAgICAgIDogT3BhcXVlSlNDbGFzczo6Y3JlYXRlKGRlZmluaXRp
b24pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAKaW5kZXggNjQ1MmZmYy4uOGUyMzZlNCAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWYuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdSZWYuaCIKIAorI2luY2x1ZGUgIkluaXRp
YWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJPcGFxdWVKU1N0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi91bmljb2RlL1VURjguaD4KIApAQCAtMzQsMTEgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY6OlVuaWNvZGU7CiAKIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoY29uc3QgSlNDaGFyKiBjaGFycywgc2l6ZV90IG51bUNoYXJzKQogeworICAgIGluaXRpYWxp
emVUaHJlYWRpbmcoKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShjaGFycywg
bnVtQ2hhcnMpLnJlbGVhc2VSZWYoKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQogeworICAgIGluaXRpYWxpemVUaHJl
YWRpbmcoKTsKICAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJs
ZW4oc3RyaW5nKTsKICAgICAgICAgVmVjdG9yPFVDaGFyLCAxMDI0PiBidWZmZXIobGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAppbmRleCA2NWVkZDA5Li4yYjhmZDllIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiSlNTdHJpbmdSZWZDRi5oIgogCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJKU1N0cmluZ1JlZi5oIgogI2luY2x1
ZGUgIk9wYXF1ZUpTU3RyaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+CkBAIC0z
NSw2ICszNiw3IEBACiAKIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENG
U3RyaW5nUmVmIHN0cmluZykKIHsKKyAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAg
ICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7CiAgICAgaWYgKGxl
bmd0aCkgewogICAgICAgICBPd25BcnJheVB0cjxVbmlDaGFyPiBidWZmZXIobmV3IFVuaUNoYXJb
bGVuZ3RoXSk7CkBAIC00NCw3ICs0Niw3IEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKICAgICB9IGVsc2UgewogICAgICAgICByZXR1
cm4gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZSgwLCAwKS5yZWxlYXNlUmVmKCk7CiAgICAgfQotICAg
IH0KK30KIAogQ0ZTdHJpbmdSZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYg
YWxsb2MsIEpTU3RyaW5nUmVmIHN0cmluZykKIHsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3OTE3NzgxLi5kN2Yx
YjZjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDEtMTEgIERhdmlkIExldmlu
ICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI0NQorCisgICAgICAgIEFkZCBpbml0aWFsaXplVGhyZWFkaW5nIHRvIGtleSBwbGFjZXMgaW4g
SlMgQVBJIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIFVTdHJpbmcgaXMgcHJvcGVybHkgaW5pdGlh
bGl6ZWQuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29u
dGV4dEdyb3VwQ3JlYXRlKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dENyZWF0ZSk6CisgICAg
ICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTQ2xhc3NDcmVhdGUpOgorICAg
ICAgICAqIEFQSS9KU1N0cmluZ1JlZi5jcHA6CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdpdGhD
aGFyYWN0ZXJzKToKKyAgICAgICAgKEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKToKKyAg
ICAgICAgKiBBUEkvSlNTdHJpbmdSZWZDRi5jcHA6CisgICAgICAgIChKU1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZyk6CisKIDIwMDktMDEtMTEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKEJ1aWxkIGZpeCkuCg==
</data>
<flag name="review"
          id="12662"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>