<?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>37722</bug_id>
          
          <creation_ts>2010-04-16 12:06:11 -0700</creation_ts>
          <short_desc>Allow to construct HashTraits&lt;WebCore::QualifiedName&gt;::constructDeletedValue</short_desc>
          <delta_ts>2010-04-24 10:53:40 -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>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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="anton muhin">antonm</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213353</commentid>
    <comment_count>0</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-16 12:06:11 -0700</bug_when>
    <thetext>Allow to construct HashTraits&lt;WebCore::QualifiedName&gt;::constructDeletedValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213360</commentid>
    <comment_count>1</comment_count>
      <attachid>53549</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-16 12:15:01 -0700</bug_when>
    <thetext>Created attachment 53549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213361</commentid>
    <comment_count>2</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-16 12:16:15 -0700</bug_when>
    <thetext>If a patch is fine, is there a way to add a unit test for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213461</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-16 15:58:47 -0700</bug_when>
    <thetext>What&apos;s this patch trying to accomplish? Is there a problem with the previous behavior? If so, please describe it in the ChangeLog, and in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213466</commentid>
    <comment_count>4</comment_count>
      <attachid>53549</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-16 16:03:46 -0700</bug_when>
    <thetext>Comment on attachment 53549
Patch

The ChangeLog needs to explain the purpose of this change. I can&apos;t tell if this is fixing a bug, changing performance, or just a refactoring change.

&gt; Index: WebCore/dom/QualifiedName.cpp
&gt; ===================================================================
&gt; --- WebCore/dom/QualifiedName.cpp	(revision 57720)
&gt; +++ WebCore/dom/QualifiedName.cpp	(working copy)
&gt; @@ -78,6 +78,7 @@ void QualifiedName::deref()
&gt;      if (!m_impl)
&gt;          return;
&gt;  #endif
&gt; +    ASSERT(m_impl); // HashTableDeletedValue values must be never destructed.

Hash table deleted values are generally are generally -1 cast to a pointer rather than 0 cast to a pointer by convention.

&gt;  
&gt;      if (m_impl-&gt;hasOneRef())
&gt;          gNameCache-&gt;remove(m_impl);
&gt; Index: WebCore/dom/QualifiedName.h
&gt; ===================================================================
&gt; --- WebCore/dom/QualifiedName.h	(revision 57720)
&gt; +++ WebCore/dom/QualifiedName.h	(working copy)
&gt; @@ -58,6 +58,8 @@ public:
&gt;  
&gt;      QualifiedName(const AtomicString&amp; prefix, const AtomicString&amp; localName, const AtomicString&amp; namespaceURI);
&gt;      QualifiedName(const AtomicString&amp; prefix, const char* localName, const AtomicString&amp; namespaceURI);
&gt; +    QualifiedName(WTF::HashTableDeletedValueType) : m_impl(0) { }
&gt; +    bool isHashTableDeletedValue() const { return !m_impl; }
&gt;      ~QualifiedName() { deref(); }
&gt;  #ifdef QNAME_DEFAULT_CONSTRUCTOR
&gt;      QualifiedName() : m_impl(0) { }
&gt; @@ -167,7 +169,7 @@ namespace WTF {
&gt;      template&lt;&gt; struct HashTraits&lt;WebCore::QualifiedName&gt; : GenericHashTraits&lt;WebCore::QualifiedName&gt; {
&gt;          static const bool emptyValueIsZero = false;
&gt;          static WebCore::QualifiedName emptyValue() { return WebCore::QualifiedName(WebCore::nullAtom, WebCore::nullAtom, WebCore::nullAtom); }
&gt; -        static void constructDeletedValue(WebCore::QualifiedName&amp; slot) { new (&amp;slot) WebCore::QualifiedName(WebCore::nullAtom, WebCore::AtomicString(HashTableDeletedValue), WebCore::nullAtom); }
&gt; +        static void constructDeletedValue(WebCore::QualifiedName&amp; slot) { new (&amp;slot) WebCore::QualifiedName(WTF::HashTableDeletedValue); }
&gt;          static bool isDeletedValue(const WebCore::QualifiedName&amp; slot) { return slot.localName().isHashTableDeletedValue(); }
&gt;      };
&gt;  }

r- for not explaining the purpose of the patch. Please resubmit with an explanation of what bug is being fixed (if any) and a test case of there is a behavior change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214018</commentid>
    <comment_count>5</comment_count>
      <attachid>53677</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-19 07:29:46 -0700</bug_when>
    <thetext>Created attachment 53677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214023</commentid>
    <comment_count>6</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-19 07:39:21 -0700</bug_when>
    <thetext>Sorry, Maciej, I put explanations into ChangeLog, but that was probably not enough and wrong place.

It&apos;s not related to performance, it appears to me a bug which we were lucky not to hit.  I noticed that while trying to understand what&apos;s wrong with node list caching.  Sample stack trace: 

#0  0x0000000100f0bf60 in WebCore::StringImpl::inTable (this=0xffffffffffffffff) at StringImpl.h:168
#1  0x0000000100f0b971 in WebCore::AtomicString::add (r=0xffffffffffffffff) at /Users/chrome-user/WebKit/WebCore/platform/text/AtomicString.cpp:217
#2  0x0000000100f0fc14 in WebCore::AtomicString::AtomicString (this=0x7fff5fbfcad0, imp=0xffffffffffffffff) at AtomicString.h:51
#3  0x00000001016c41ad in WebCore::QNameComponentsTranslator::translate (location=@0x106827728, components=@0x7fff5fbfcd60) at /Users/chrome-user/WebKit/WebCore/dom/QualifiedName.cpp:48
#4  0x00000001016c4232 in WTF::HashSetTranslatorAdapter&lt;WebCore::QualifiedName::QualifiedNameImpl*, WTF::HashTraits&lt;WebCore::QualifiedName::QualifiedNameImpl*&gt;, WebCore::QualifiedNameComponents, WebCore::QNameComponentsTranslator&gt;::translate (location=@0x106827728, key=@0x7fff5fbfcd60, hashCode=234777509) at HashSet.h:111
#5  0x00000001016c434e in WTF::HashTable&lt;WebCore::QualifiedName::QualifiedNameImpl*, WebCore::QualifiedName::QualifiedNameImpl*, WTF::IdentityExtractor&lt;WebCore::QualifiedName::QualifiedNameImpl*&gt;, WebCore::QualifiedNameHash, WTF::HashTraits&lt;WebCore::QualifiedName::QualifiedNameImpl*&gt;, WTF::HashTraits&lt;WebCore::QualifiedName::QualifiedNameImpl*&gt; &gt;::addPassingHashCode&lt;WebCore::QualifiedNameComponents, WebCore::QualifiedNameComponents, WTF::HashSetTranslatorAdapter&lt;WebCore::QualifiedName::QualifiedNameImpl*, WTF::HashTraits&lt;WebCore::QualifiedName::QualifiedNameImpl*&gt;, WebCore::QualifiedNameComponents, WebCore::QNameComponentsTranslator&gt; &gt; (this=0x107016370, key=@0x7fff5fbfcd60, extra=@0x7fff5fbfcd60) at HashTable.h:737
#6  0x00000001016c44e0 in WTF::HashSet&lt;WebCore::QualifiedName::QualifiedNameImpl*, WebCore::QualifiedNameHash, WTF::HashTraits&lt;WebCore::QualifiedName::QualifiedNameImpl*&gt; &gt;::add&lt;WebCore::QualifiedNameComponents, WebCore::QNameComponentsTranslator&gt; (this=0x107016370, value=@0x7fff5fbfcd60) at HashSet.h:219
#7  0x00000001016c2671 in WebCore::QualifiedName::init (this=0x1068238f0, p=@0x102afeb20, l=@0x7fff5fbfcde0, n=@0x102afeb20) at /Users/chrome-user/WebKit/WebCore/dom/QualifiedName.cpp:59
#8  0x00000001016c2784 in WebCore::QualifiedName::QualifiedName (this=0x1068238f0, p=@0x102afeb20, l=@0x7fff5fbfcde0, n=@0x102afeb20) at /Users/chrome-user/WebKit/WebCore/dom/QualifiedName.cpp:67
#9  0x000000010197926d in WTF::HashTraits&lt;WebCore::QualifiedName&gt;::constructDeletedValue (slot=@0x1068238f0) at QualifiedName.h:170
#10 0x0000000101979292 in WTF::PairHashTraits&lt;WTF::HashTraits&lt;WebCore::QualifiedName&gt;, WTF::HashTraits&lt;WebCore::TagNodeList*&gt; &gt;::constructDeletedValue (slot=@0x1068238f0) at HashTraits.h:103

So any attempt to delete a key from hash table keyed by QualifiedName should crash if I understand what goes on correctly---QualifiedName::init would lookup in internal table and this lookup would attempt to search if AtomicString(HashTableDeletedValue) is present in internal tables.  Even if we would make that check pass, idea to construct temporary AtomicString(HashTableDeletedValue) appears dubious to me---eventually destructor should run (unless I forgot some other C++ quirk) which is bad idea for any HashTableDeletedValue and would probably crash when derefing underlying StringImpl.

I&apos;d be glad to provide a unit test to prove that, but I am lacking knowledge of WebKit testing infrastructure---LayoutTests don&apos;t seem to be a tool for me.

I&apos;ve uploaded new patch to address your comment about NULL vs. -1 as a sentinel value.

(In reply to comment #4)
&gt; (From update of attachment 53549 [details])
&gt; The ChangeLog needs to explain the purpose of this change. I can&apos;t tell if this
&gt; is fixing a bug, changing performance, or just a refactoring change.
&gt; 
&gt; &gt; Index: WebCore/dom/QualifiedName.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/dom/QualifiedName.cpp	(revision 57720)
&gt; &gt; +++ WebCore/dom/QualifiedName.cpp	(working copy)
&gt; &gt; @@ -78,6 +78,7 @@ void QualifiedName::deref()
&gt; &gt;      if (!m_impl)
&gt; &gt;          return;
&gt; &gt;  #endif
&gt; &gt; +    ASSERT(m_impl); // HashTableDeletedValue values must be never destructed.
&gt; 
&gt; Hash table deleted values are generally are generally -1 cast to a pointer
&gt; rather than 0 cast to a pointer by convention.
&gt; 
&gt; &gt;  
&gt; &gt;      if (m_impl-&gt;hasOneRef())
&gt; &gt;          gNameCache-&gt;remove(m_impl);
&gt; &gt; Index: WebCore/dom/QualifiedName.h
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/dom/QualifiedName.h	(revision 57720)
&gt; &gt; +++ WebCore/dom/QualifiedName.h	(working copy)
&gt; &gt; @@ -58,6 +58,8 @@ public:
&gt; &gt;  
&gt; &gt;      QualifiedName(const AtomicString&amp; prefix, const AtomicString&amp; localName, const AtomicString&amp; namespaceURI);
&gt; &gt;      QualifiedName(const AtomicString&amp; prefix, const char* localName, const AtomicString&amp; namespaceURI);
&gt; &gt; +    QualifiedName(WTF::HashTableDeletedValueType) : m_impl(0) { }
&gt; &gt; +    bool isHashTableDeletedValue() const { return !m_impl; }
&gt; &gt;      ~QualifiedName() { deref(); }
&gt; &gt;  #ifdef QNAME_DEFAULT_CONSTRUCTOR
&gt; &gt;      QualifiedName() : m_impl(0) { }
&gt; &gt; @@ -167,7 +169,7 @@ namespace WTF {
&gt; &gt;      template&lt;&gt; struct HashTraits&lt;WebCore::QualifiedName&gt; : GenericHashTraits&lt;WebCore::QualifiedName&gt; {
&gt; &gt;          static const bool emptyValueIsZero = false;
&gt; &gt;          static WebCore::QualifiedName emptyValue() { return WebCore::QualifiedName(WebCore::nullAtom, WebCore::nullAtom, WebCore::nullAtom); }
&gt; &gt; -        static void constructDeletedValue(WebCore::QualifiedName&amp; slot) { new (&amp;slot) WebCore::QualifiedName(WebCore::nullAtom, WebCore::AtomicString(HashTableDeletedValue), WebCore::nullAtom); }
&gt; &gt; +        static void constructDeletedValue(WebCore::QualifiedName&amp; slot) { new (&amp;slot) WebCore::QualifiedName(WTF::HashTableDeletedValue); }
&gt; &gt;          static bool isDeletedValue(const WebCore::QualifiedName&amp; slot) { return slot.localName().isHashTableDeletedValue(); }
&gt; &gt;      };
&gt; &gt;  }
&gt; 
&gt; r- for not explaining the purpose of the patch. Please resubmit with an
&gt; explanation of what bug is being fixed (if any) and a test case of there is a
&gt; behavior change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214153</commentid>
    <comment_count>7</comment_count>
      <attachid>53702</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-19 12:12:39 -0700</bug_when>
    <thetext>Created attachment 53702
Proper is deleted check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214843</commentid>
    <comment_count>8</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-20 12:17:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=53702) [details]
&gt; Proper is deleted check

Friendly ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216185</commentid>
    <comment_count>9</comment_count>
      <attachid>53702</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-22 17:41:45 -0700</bug_when>
    <thetext>Comment on attachment 53702
Proper is deleted check

WebCore/dom/QualifiedName.h:62
 +      bool isHashTableDeletedValue() const { return !m_impl; }

This can&apos;t be right. It should be:

    bool isHashTableDeletedValue() { return m_impl == hashTableDeletedValue(); }

Right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216414</commentid>
    <comment_count>10</comment_count>
      <attachid>54161</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-23 08:18:41 -0700</bug_when>
    <thetext>Created attachment 54161
Proper check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216417</commentid>
    <comment_count>11</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-23 08:20:56 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 53702 [details])
&gt; WebCore/dom/QualifiedName.h:62
&gt;  +      bool isHashTableDeletedValue() const { return !m_impl; }
&gt; 
&gt; This can&apos;t be right. It should be:
&gt; 
&gt;     bool isHashTableDeletedValue() { return m_impl == hashTableDeletedValue();
&gt; }
&gt; 
&gt; Right?

Oh yes, thanks a lot for spotting this,Darin.  New patch uploaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216433</commentid>
    <comment_count>12</comment_count>
      <attachid>54161</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-23 09:09:55 -0700</bug_when>
    <thetext>Comment on attachment 54161
Proper check

&gt; +    ASSERT(!isHashTableDeletedValue()); // HashTableDeletedValue values must be never derefed..

There&apos;s an extra period here. Also, the comment says the same thing as the assertion, so I suggest just leaving the comment out.

I&apos;m going to say r=me, but I am wondering how you tested this change, given the old wrong version you had here before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216440</commentid>
    <comment_count>13</comment_count>
      <attachid>54167</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-23 09:26:22 -0700</bug_when>
    <thetext>Created attachment 54167
Remove comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216444</commentid>
    <comment_count>14</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-23 09:29:38 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 54161 [details])
&gt; &gt; +    ASSERT(!isHashTableDeletedValue()); // HashTableDeletedValue values must be never derefed..
&gt; 
&gt; There&apos;s an extra period here. Also, the comment says the same thing as the
&gt; assertion, so I suggest just leaving the comment out.
&gt; 
&gt; I&apos;m going to say r=me, but I am wondering how you tested this change, given the
&gt; old wrong version you had here before.

Comment removed.

I too dissatisfied with the testing I can currently do, that&apos;s why I asked if
there are any unit tests in WebKit.

Current patch is tested by running run-webkit-tests on MBP in both debug and
release versions.

Previous version of patch (one that used NULL as a marker for deleted object)
got better testing as it was embedded into NodeList caching benchmark which
indeed exercises removal of elements from maps keyed by QualifiedName.

If you could suggest any testing method I should use, I&apos;d be happy to run it
too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216735</commentid>
    <comment_count>15</comment_count>
      <attachid>54167</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-04-24 10:26:06 -0700</bug_when>
    <thetext>Comment on attachment 54167
Remove comment

Thanks, Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216738</commentid>
    <comment_count>16</comment_count>
      <attachid>54167</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-24 10:53:34 -0700</bug_when>
    <thetext>Comment on attachment 54167
Remove comment

Clearing flags on attachment: 54167

Committed r58220: &lt;http://trac.webkit.org/changeset/58220&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216739</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-24 10:53:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53549</attachid>
            <date>2010-04-16 12:15:01 -0700</date>
            <delta_ts>2010-04-19 07:29:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37722-20100416231459.patch</filename>
            <type>text/plain</type>
            <size>2957</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzczMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMTYgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bGxvdyB0byBjb25zdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpRdWFsaWZpZWROYW1lPjo6Y29u
c3RydWN0RGVsZXRlZFZhbHVlCisKKyAgICAgICAgRm9ybWVyIGltcGxlbWVudGF0aW9uIGF0dGVt
cHRlZCB0byB1c2UgQXRvbWljU3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAg
aG93ZXZlciB0aG9zZSB2YWx1ZXMgY2Fubm90IGJlIHVzZWQgdGhhdCB3YXk6IG9uZSBjYW5ub3Qg
Y29uc3RydWN0CisgICAgICAgIFF1YWxpZmllZE5hbWVJbXBsIG91dCBvZiBzdWNoIEF0b21pY1N0
cmluZyBhcyB3ZSdsbCB0cnkgdG8gbG9va3VwIHRoaXMgc3RyaW5nCisgICAgICAgIGluIHRoZSB0
YWJsZSwgZm9yIGV4YW1wbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzcyMgorCisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6ZGVyZWYpOgorICAgICAgICAqIGRvbS9RdWFs
aWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWRO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKToKKyAgICAgICAgKFdURjo6KToKKwogMjAxMC0wNC0xNiAgSmlhbiBMaSAgPGppYW5s
aUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpJbmRl
eDogV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5jcHAJKHJldmlzaW9uIDU3NzIwKQorKysgV2ViQ29yZS9kb20vUXVh
bGlmaWVkTmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAgdm9pZCBRdWFs
aWZpZWROYW1lOjpkZXJlZigpCiAgICAgaWYgKCFtX2ltcGwpCiAgICAgICAgIHJldHVybjsKICNl
bmRpZgorICAgIEFTU0VSVChtX2ltcGwpOyAvLyBIYXNoVGFibGVEZWxldGVkVmFsdWUgdmFsdWVz
IG11c3QgYmUgbmV2ZXIgZGVzdHJ1Y3RlZC4KIAogICAgIGlmIChtX2ltcGwtPmhhc09uZVJlZigp
KQogICAgICAgICBnTmFtZUNhY2hlLT5yZW1vdmUobV9pbXBsKTsKSW5kZXg6IFdlYkNvcmUvZG9t
L1F1YWxpZmllZE5hbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmgJKHJldmlzaW9uIDU3NzIwKQorKysgV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFF1YWxpZmllZE5hbWUo
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgUXVhbGlmaWVkTmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgY2hhciogbG9jYWxOYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CisgICAgUXVhbGlmaWVkTmFtZShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKDApIHsgfQorICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9CiAgICAgflF1YWxpZmll
ZE5hbWUoKSB7IGRlcmVmKCk7IH0KICNpZmRlZiBRTkFNRV9ERUZBVUxUX0NPTlNUUlVDVE9SCiAg
ICAgUXVhbGlmaWVkTmFtZSgpIDogbV9pbXBsKDApIHsgfQpAQCAtMTY3LDcgKzE2OSw3IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6
UXVhbGlmaWVkTmFtZT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpRdWFsaWZpZWROYW1l
PiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsK
ICAgICAgICAgc3RhdGljIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUgZW1wdHlWYWx1ZSgpIHsgcmV0
dXJuIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUoV2ViQ29yZTo6bnVsbEF0b20sIFdlYkNvcmU6Om51
bGxBdG9tLCBXZWJDb3JlOjpudWxsQXRvbSk7IH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29uc3Ry
dWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmIHNsb3QpIHsgbmV3ICgmc2xv
dCkgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZShXZWJDb3JlOjpudWxsQXRvbSwgV2ViQ29yZTo6QXRv
bWljU3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSksIFdlYkNvcmU6Om51bGxBdG9tKTsgfQor
ICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6UXVhbGlm
aWVkTmFtZSYgc2xvdCkgeyBuZXcgKCZzbG90KSBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRW
YWx1ZShjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiBzbG90KSB7IHJldHVybiBzbG90Lmxv
Y2FsTmFtZSgpLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICB9OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53677</attachid>
            <date>2010-04-19 07:29:46 -0700</date>
            <delta_ts>2010-04-19 12:12:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37722-20100419182944.patch</filename>
            <type>text/plain</type>
            <size>4809</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3ODA5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQtMTkgIEFudG9uIE11
aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbGxvdyB0byBjb25zdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3Jl
OjpRdWFsaWZpZWROYW1lPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlCisKKyAgICAgICAgRm9ybWVy
IGltcGxlbWVudGF0aW9uIGF0dGVtcHRlZCB0byB1c2UgQXRvbWljU3RyaW5nKEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICAgICAgaG93ZXZlciB0aG9zZSB2YWx1ZXMgY2Fubm90IGJlIHVzZWQg
dGhhdCB3YXk6IG9uZSBjYW5ub3QgY29uc3RydWN0CisgICAgICAgIFF1YWxpZmllZE5hbWVJbXBs
IG91dCBvZiBzdWNoIEF0b21pY1N0cmluZyBhcyB3ZSdsbCB0cnkgdG8gbG9va3VwIHRoaXMgc3Ry
aW5nCisgICAgICAgIGluIHRoZSB0YWJsZSwgZm9yIGV4YW1wbGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzcyMgorCisgICAgICAgICogd3RmL1Jl
ZlB0ci5oOiBleHBvc2UgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlCisKIDIwMTAtMDQtMTggIEt3
YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBMYXN6bG8gR29tYm9zLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gNTc4MDgpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDkgKzc5
LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgdm9pZCBzd2FwKFJlZlB0ciYpOwogCi0g
ICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIFQqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKTsgfQogCisgICAgcHJpdmF0ZToKICAgICAg
ICAgVCogbV9wdHI7CiAgICAgfTsKICAgICAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzgwOSkKKysrIFdlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMTkgIEFu
dG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyB0byBjb25zdHJ1Y3QgSGFzaFRyYWl0czxX
ZWJDb3JlOjpRdWFsaWZpZWROYW1lPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlCisKKyAgICAgICAg
Rm9ybWVyIGltcGxlbWVudGF0aW9uIGF0dGVtcHRlZCB0byB1c2UgQXRvbWljU3RyaW5nKEhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgaG93ZXZlciB0aG9zZSB2YWx1ZXMgY2Fubm90IGJl
IHVzZWQgdGhhdCB3YXk6IG9uZSBjYW5ub3QgY29uc3RydWN0CisgICAgICAgIFF1YWxpZmllZE5h
bWVJbXBsIG91dCBvZiBzdWNoIEF0b21pY1N0cmluZyBhcyB3ZSdsbCB0cnkgdG8gbG9va3VwIHRo
aXMgc3RyaW5nCisgICAgICAgIGluIHRoZSB0YWJsZSwgZm9yIGV4YW1wbGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzcyMgorCisgICAgICAgICog
ZG9tL1F1YWxpZmllZE5hbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6
ZGVyZWYpOiBjaGVjayB0aGF0IGhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMgbmV2ZXIgZGVyZWZl
ZAorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFs
aWZpZWROYW1lOjpRdWFsaWZpZWROYW1lKTogYWRkIGEgY29uc3RydWN0b3IgdG8gY3JlYXRlIGhh
c2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6
OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTogYWRkIGEgY2hlY2sgaWYgZ2l2ZW4gaW5zdGFuY2Ug
aXMgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlCisgICAgICAgIChXVEY6Oik6CisKIDIwMTAtMDQt
MTkgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6IFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCShyZXZpc2lvbiA1Nzgw
OCkKKysrIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCw3IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6ZGVyZWYoKQogICAgIGlmICghbV9pbXBs
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKKyAgICBBU1NFUlQobV9pbXBsICE9IGhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpKTsgLy8gSGFzaFRhYmxlRGVsZXRlZFZhbHVlIHZhbHVlcyBtdXN0IGJl
IG5ldmVyIGRlcmVmZWQuLgogCiAgICAgaWYgKG1faW1wbC0+aGFzT25lUmVmKCkpCiAgICAgICAg
IGdOYW1lQ2FjaGUtPnJlbW92ZShtX2ltcGwpOwpJbmRleDogV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAkocmV2aXNp
b24gNTc4MDgpCisrKyBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogCiAgICAgUXVhbGlmaWVkTmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAgICBRdWFsaWZpZWROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBjb25zdCBjaGFyKiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJKTsKKyAgICBRdWFsaWZpZWROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVHlwZSkgOiBtX2ltcGwoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQorICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9CiAg
ICAgflF1YWxpZmllZE5hbWUoKSB7IGRlcmVmKCk7IH0KICNpZmRlZiBRTkFNRV9ERUZBVUxUX0NP
TlNUUlVDVE9SCiAgICAgUXVhbGlmaWVkTmFtZSgpIDogbV9pbXBsKDApIHsgfQpAQCAtOTIsNiAr
OTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVVJJKTsKICAgICB2b2lkIHJlZigpIGNvbnN0IHsgbV9pbXBsLT5yZWYoKTsgfQogICAg
IHZvaWQgZGVyZWYoKTsKKworICAgIHN0YXRpYyBRdWFsaWZpZWROYW1lSW1wbCogaGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gUmVmUHRyPFF1YWxpZmllZE5hbWVJbXBsPjo6aGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICAKICAgICBRdWFsaWZpZWROYW1lSW1wbCogbV9pbXBs
OwogfTsKQEAgLTE2Nyw3ICsxNzEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlF1YWxpZmllZE5hbWU+IDogR2VuZXJpY0hhc2hU
cmFpdHM8V2ViQ29yZTo6UXVhbGlmaWVkTmFtZT4gewogICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBXZWJDb3JlOjpRdWFs
aWZpZWROYW1lIGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKFdl
YkNvcmU6Om51bGxBdG9tLCBXZWJDb3JlOjpudWxsQXRvbSwgV2ViQ29yZTo6bnVsbEF0b20pOyB9
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpRdWFs
aWZpZWROYW1lJiBzbG90KSB7IG5ldyAoJnNsb3QpIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUoV2Vi
Q29yZTo6bnVsbEF0b20sIFdlYkNvcmU6OkF0b21pY1N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFs
dWUpLCBXZWJDb3JlOjpudWxsQXRvbSk7IH0KKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0
RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmIHNsb3QpIHsgbmV3ICgmc2xvdCkg
V2ViQ29yZTo6UXVhbGlmaWVkTmFtZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KICAg
ICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVk
TmFtZSYgc2xvdCkgeyByZXR1cm4gc2xvdC5sb2NhbE5hbWUoKS5pc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpOyB9CiAgICAgfTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53702</attachid>
            <date>2010-04-19 12:12:39 -0700</date>
            <delta_ts>2010-04-23 08:18:34 -0700</delta_ts>
            <desc>Proper is deleted check</desc>
            <filename>bug-37722-20100419231237.patch</filename>
            <type>text/plain</type>
            <size>4926</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3ODA5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQtMTkgIEFudG9uIE11
aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbGxvdyB0byBjb25zdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3Jl
OjpRdWFsaWZpZWROYW1lPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlCisKKyAgICAgICAgRm9ybWVy
IGltcGxlbWVudGF0aW9uIGF0dGVtcHRlZCB0byB1c2UgQXRvbWljU3RyaW5nKEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICAgICAgaG93ZXZlciB0aG9zZSB2YWx1ZXMgY2Fubm90IGJlIHVzZWQg
dGhhdCB3YXk6IG9uZSBjYW5ub3QgY29uc3RydWN0CisgICAgICAgIFF1YWxpZmllZE5hbWVJbXBs
IG91dCBvZiBzdWNoIEF0b21pY1N0cmluZyBhcyB3ZSdsbCB0cnkgdG8gbG9va3VwIHRoaXMgc3Ry
aW5nCisgICAgICAgIGluIHRoZSB0YWJsZSwgZm9yIGV4YW1wbGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzcyMgorCisgICAgICAgICogd3RmL1Jl
ZlB0ci5oOiBleHBvc2UgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlCisKIDIwMTAtMDQtMTggIEt3
YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBMYXN6bG8gR29tYm9zLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gNTc4MDgpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDkgKzc5
LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgdm9pZCBzd2FwKFJlZlB0ciYpOwogCi0g
ICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIFQqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKTsgfQogCisgICAgcHJpdmF0ZToKICAgICAg
ICAgVCogbV9wdHI7CiAgICAgfTsKICAgICAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzgwOSkKKysrIFdlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMTkgIEFu
dG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyB0byBjb25zdHJ1Y3QgSGFzaFRyYWl0czxX
ZWJDb3JlOjpRdWFsaWZpZWROYW1lPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlCisKKyAgICAgICAg
Rm9ybWVyIGltcGxlbWVudGF0aW9uIGF0dGVtcHRlZCB0byB1c2UgQXRvbWljU3RyaW5nKEhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgaG93ZXZlciB0aG9zZSB2YWx1ZXMgY2Fubm90IGJl
IHVzZWQgdGhhdCB3YXk6IG9uZSBjYW5ub3QgY29uc3RydWN0CisgICAgICAgIFF1YWxpZmllZE5h
bWVJbXBsIG91dCBvZiBzdWNoIEF0b21pY1N0cmluZyBhcyB3ZSdsbCB0cnkgdG8gbG9va3VwIHRo
aXMgc3RyaW5nCisgICAgICAgIGluIHRoZSB0YWJsZSwgZm9yIGV4YW1wbGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzcyMgorCisgICAgICAgICog
ZG9tL1F1YWxpZmllZE5hbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6
ZGVyZWYpOiBjaGVjayB0aGF0IGhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMgbmV2ZXIgZGVyZWZl
ZAorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFs
aWZpZWROYW1lOjpRdWFsaWZpZWROYW1lKTogYWRkIGEgY29uc3RydWN0b3IgdG8gY3JlYXRlIGhh
c2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmllZE5hbWU6
OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTogYWRkIGEgY2hlY2sgaWYgZ2l2ZW4gaW5zdGFuY2Ug
aXMgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlCisgICAgICAgIChXVEY6Oik6CisKIDIwMTAtMDQt
MTkgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6IFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCShyZXZpc2lvbiA1Nzgw
OCkKKysrIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCw3IEBAIHZvaWQgUXVhbGlmaWVkTmFtZTo6ZGVyZWYoKQogICAgIGlmICghbV9pbXBs
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKKyAgICBBU1NFUlQobV9pbXBsICE9IGhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpKTsgLy8gSGFzaFRhYmxlRGVsZXRlZFZhbHVlIHZhbHVlcyBtdXN0IGJl
IG5ldmVyIGRlcmVmZWQuLgogCiAgICAgaWYgKG1faW1wbC0+aGFzT25lUmVmKCkpCiAgICAgICAg
IGdOYW1lQ2FjaGUtPnJlbW92ZShtX2ltcGwpOwpJbmRleDogV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAkocmV2aXNp
b24gNTc4MDgpCisrKyBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogCiAgICAgUXVhbGlmaWVkTmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAgICBRdWFsaWZpZWROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBjb25zdCBjaGFyKiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJKTsKKyAgICBRdWFsaWZpZWROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVHlwZSkgOiBtX2ltcGwoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQorICAgIGJv
b2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9CiAg
ICAgflF1YWxpZmllZE5hbWUoKSB7IGRlcmVmKCk7IH0KICNpZmRlZiBRTkFNRV9ERUZBVUxUX0NP
TlNUUlVDVE9SCiAgICAgUXVhbGlmaWVkTmFtZSgpIDogbV9pbXBsKDApIHsgfQpAQCAtOTIsNiAr
OTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVVJJKTsKICAgICB2b2lkIHJlZigpIGNvbnN0IHsgbV9pbXBsLT5yZWYoKTsgfQogICAg
IHZvaWQgZGVyZWYoKTsKKworICAgIHN0YXRpYyBRdWFsaWZpZWROYW1lSW1wbCogaGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gUmVmUHRyPFF1YWxpZmllZE5hbWVJbXBsPjo6aGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICAKICAgICBRdWFsaWZpZWROYW1lSW1wbCogbV9pbXBs
OwogfTsKQEAgLTE2Nyw4ICsxNzEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlF1YWxpZmllZE5hbWU+IDogR2VuZXJpY0hhc2hU
cmFpdHM8V2ViQ29yZTo6UXVhbGlmaWVkTmFtZT4gewogICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBXZWJDb3JlOjpRdWFs
aWZpZWROYW1lIGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKFdl
YkNvcmU6Om51bGxBdG9tLCBXZWJDb3JlOjpudWxsQXRvbSwgV2ViQ29yZTo6bnVsbEF0b20pOyB9
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpRdWFs
aWZpZWROYW1lJiBzbG90KSB7IG5ldyAoJnNsb3QpIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUoV2Vi
Q29yZTo6bnVsbEF0b20sIFdlYkNvcmU6OkF0b21pY1N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFs
dWUpLCBXZWJDb3JlOjpudWxsQXRvbSk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVk
VmFsdWUoY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYgc2xvdCkgeyByZXR1cm4gc2xvdC5s
b2NhbE5hbWUoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisgICAgICAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiBzbG90KSB7
IG5ldyAoJnNsb3QpIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVk
VmFsdWUpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNv
cmU6OlF1YWxpZmllZE5hbWUmIHNsb3QpIHsgcmV0dXJuIHNsb3QuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQogICAgIH07CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54161</attachid>
            <date>2010-04-23 08:18:41 -0700</date>
            <delta_ts>2010-04-23 09:26:15 -0700</delta_ts>
            <desc>Proper check</desc>
            <filename>bug-37722-20100423191839.patch</filename>
            <type>text/plain</type>
            <size>4949</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4MTYzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQtMTkgIEFudG9uIE11
aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbGxvdyB0byBjb25zdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3Jl
OjpRdWFsaWZpZWROYW1lPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlCisKKyAgICAgICAgRm9ybWVy
IGltcGxlbWVudGF0aW9uIGF0dGVtcHRlZCB0byB1c2UgQXRvbWljU3RyaW5nKEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICAgICAgaG93ZXZlciB0aG9zZSB2YWx1ZXMgY2Fubm90IGJlIHVzZWQg
dGhhdCB3YXk6IG9uZSBjYW5ub3QgY29uc3RydWN0CisgICAgICAgIFF1YWxpZmllZE5hbWVJbXBs
IG91dCBvZiBzdWNoIEF0b21pY1N0cmluZyBhcyB3ZSdsbCB0cnkgdG8gbG9va3VwIHRoaXMgc3Ry
aW5nCisgICAgICAgIGluIHRoZSB0YWJsZSwgZm9yIGV4YW1wbGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzcyMgorCisgICAgICAgICogd3RmL1Jl
ZlB0ci5oOiBleHBvc2UgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlCisKIDIwMTAtMDQtMjIgIFN0
ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oCShyZXZpc2lvbiA1ODE2MykKKysrIEph
dmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtNzksOSArNzksOSBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICB2b2lkIHN3YXAoUmVmUHRyJik7CiAKLSAgICBw
cml2YXRlOgogICAgICAgICBzdGF0aWMgVCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEpOyB9CiAKKyAgICBwcml2YXRlOgogICAgICAgICBU
KiBtX3B0cjsKICAgICB9OwogICAgIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4MTYzKQorKysgV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0xOSAgQW50b24g
TXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIGNvbnN0cnVjdCBIYXNoVHJhaXRzPFdlYkNv
cmU6OlF1YWxpZmllZE5hbWU+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUKKworICAgICAgICBGb3Jt
ZXIgaW1wbGVtZW50YXRpb24gYXR0ZW1wdGVkIHRvIHVzZSBBdG9taWNTdHJpbmcoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKQorICAgICAgICBob3dldmVyIHRob3NlIHZhbHVlcyBjYW5ub3QgYmUgdXNl
ZCB0aGF0IHdheTogb25lIGNhbm5vdCBjb25zdHJ1Y3QKKyAgICAgICAgUXVhbGlmaWVkTmFtZUlt
cGwgb3V0IG9mIHN1Y2ggQXRvbWljU3RyaW5nIGFzIHdlJ2xsIHRyeSB0byBsb29rdXAgdGhpcyBz
dHJpbmcKKyAgICAgICAgaW4gdGhlIHRhYmxlLCBmb3IgZXhhbXBsZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzIyCisKKyAgICAgICAgKiBkb20v
UXVhbGlmaWVkTmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpkZXJl
Zik6IGNoZWNrIHRoYXQgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcyBuZXZlciBkZXJlZmVkCisg
ICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWU6OlF1YWxpZmllZE5hbWUpOiBhZGQgYSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgaGFzaCB0
YWJsZSBkZWxldGVkIHZhbHVlcworICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUpOiBhZGQgYSBjaGVjayBpZiBnaXZlbiBpbnN0YW5jZSBpcyBo
YXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWUKKyAgICAgICAgKFdURjo6KToKKwogMjAxMC0wNC0yMyAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAkocmV2aXNpb24g
NTgxNjMpCisrKyBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsNiArNzgsNyBAQCB2b2lkIFF1YWxpZmllZE5hbWU6OmRlcmVmKCkKICAgICBpZiAoIW1f
aW1wbCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCisgICAgQVNTRVJUKCFpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpKTsgLy8gSGFzaFRhYmxlRGVsZXRlZFZhbHVlIHZhbHVlcyBtdXN0IGJlIG5l
dmVyIGRlcmVmZWQuLgogCiAgICAgaWYgKG1faW1wbC0+aGFzT25lUmVmKCkpCiAgICAgICAgIGdO
YW1lQ2FjaGUtPnJlbW92ZShtX2ltcGwpOwpJbmRleDogV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAkocmV2aXNpb24g
NTgxNjMpCisrKyBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDYgKzU4LDggQEAgcHVibGljOgogCiAgICAgUXVhbGlmaWVkTmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAgICBRdWFsaWZpZWROYW1lKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJlZml4LCBjb25zdCBjaGFyKiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZXNwYWNlVVJJKTsKKyAgICBRdWFsaWZpZWROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlVHlwZSkgOiBtX2ltcGwoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQorICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPT0gaGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICB+UXVhbGlmaWVkTmFtZSgpIHsgZGVyZWYoKTsgfQog
I2lmZGVmIFFOQU1FX0RFRkFVTFRfQ09OU1RSVUNUT1IKICAgICBRdWFsaWZpZWROYW1lKCkgOiBt
X2ltcGwoMCkgeyB9CkBAIC05Miw2ICs5NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0KGNv
bnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAgIHZvaWQgcmVmKCkgY29uc3Qg
eyBtX2ltcGwtPnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpOworCisgICAgc3RhdGljIFF1YWxp
ZmllZE5hbWVJbXBsKiBoYXNoVGFibGVEZWxldGVkVmFsdWUoKSB7IHJldHVybiBSZWZQdHI8UXVh
bGlmaWVkTmFtZUltcGw+OjpoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogICAgIAogICAgIFF1
YWxpZmllZE5hbWVJbXBsKiBtX2ltcGw7CiB9OwpAQCAtMTY3LDggKzE3MSw4IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6UXVhbGlm
aWVkTmFtZT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpRdWFsaWZpZWROYW1lPiB7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKICAgICAg
ICAgc3RhdGljIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdl
YkNvcmU6OlF1YWxpZmllZE5hbWUoV2ViQ29yZTo6bnVsbEF0b20sIFdlYkNvcmU6Om51bGxBdG9t
LCBXZWJDb3JlOjpudWxsQXRvbSk7IH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmIHNsb3QpIHsgbmV3ICgmc2xvdCkgV2Vi
Q29yZTo6UXVhbGlmaWVkTmFtZShXZWJDb3JlOjpudWxsQXRvbSwgV2ViQ29yZTo6QXRvbWljU3Ry
aW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSksIFdlYkNvcmU6Om51bGxBdG9tKTsgfQotICAgICAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1l
JiBzbG90KSB7IHJldHVybiBzbG90LmxvY2FsTmFtZSgpLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCk7IH0KKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6
OlF1YWxpZmllZE5hbWUmIHNsb3QpIHsgbmV3ICgmc2xvdCkgV2ViQ29yZTo6UXVhbGlmaWVkTmFt
ZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNE
ZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYgc2xvdCkgeyByZXR1cm4g
c2xvdC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAgICAgfTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54167</attachid>
            <date>2010-04-23 09:26:22 -0700</date>
            <delta_ts>2010-04-24 10:53:34 -0700</delta_ts>
            <desc>Remove comment</desc>
            <filename>bug-37722-20100423202620.patch</filename>
            <type>text/plain</type>
            <size>4893</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4MTYzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQtMTkgIEFudG9uIE11
aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbGxvdyB0byBjb25zdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3Jl
OjpRdWFsaWZpZWROYW1lPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlCisKKyAgICAgICAgRm9ybWVy
IGltcGxlbWVudGF0aW9uIGF0dGVtcHRlZCB0byB1c2UgQXRvbWljU3RyaW5nKEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSkKKyAgICAgICAgaG93ZXZlciB0aG9zZSB2YWx1ZXMgY2Fubm90IGJlIHVzZWQg
dGhhdCB3YXk6IG9uZSBjYW5ub3QgY29uc3RydWN0CisgICAgICAgIFF1YWxpZmllZE5hbWVJbXBs
IG91dCBvZiBzdWNoIEF0b21pY1N0cmluZyBhcyB3ZSdsbCB0cnkgdG8gbG9va3VwIHRoaXMgc3Ry
aW5nCisgICAgICAgIGluIHRoZSB0YWJsZSwgZm9yIGV4YW1wbGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzcyMgorCisgICAgICAgICogd3RmL1Jl
ZlB0ci5oOiBleHBvc2UgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlCisKIDIwMTAtMDQtMjIgIFN0
ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUmVmUHRyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oCShyZXZpc2lvbiA1ODE2MykKKysrIEph
dmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtNzksOSArNzksOSBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICB2b2lkIHN3YXAoUmVmUHRyJik7CiAKLSAgICBw
cml2YXRlOgogICAgICAgICBzdGF0aWMgVCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEpOyB9CiAKKyAgICBwcml2YXRlOgogICAgICAgICBU
KiBtX3B0cjsKICAgICB9OwogICAgIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4MTYzKQorKysgV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0xOSAgQW50b24g
TXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIGNvbnN0cnVjdCBIYXNoVHJhaXRzPFdlYkNv
cmU6OlF1YWxpZmllZE5hbWU+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUKKworICAgICAgICBGb3Jt
ZXIgaW1wbGVtZW50YXRpb24gYXR0ZW1wdGVkIHRvIHVzZSBBdG9taWNTdHJpbmcoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKQorICAgICAgICBob3dldmVyIHRob3NlIHZhbHVlcyBjYW5ub3QgYmUgdXNl
ZCB0aGF0IHdheTogb25lIGNhbm5vdCBjb25zdHJ1Y3QKKyAgICAgICAgUXVhbGlmaWVkTmFtZUlt
cGwgb3V0IG9mIHN1Y2ggQXRvbWljU3RyaW5nIGFzIHdlJ2xsIHRyeSB0byBsb29rdXAgdGhpcyBz
dHJpbmcKKyAgICAgICAgaW4gdGhlIHRhYmxlLCBmb3IgZXhhbXBsZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzIyCisKKyAgICAgICAgKiBkb20v
UXVhbGlmaWVkTmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpkZXJl
Zik6IGNoZWNrIHRoYXQgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcyBuZXZlciBkZXJlZmVkCisg
ICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWU6OlF1YWxpZmllZE5hbWUpOiBhZGQgYSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgaGFzaCB0
YWJsZSBkZWxldGVkIHZhbHVlcworICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6aXNI
YXNoVGFibGVEZWxldGVkVmFsdWUpOiBhZGQgYSBjaGVjayBpZiBnaXZlbiBpbnN0YW5jZSBpcyBo
YXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWUKKyAgICAgICAgKFdURjo6KToKKwogMjAxMC0wNC0yMyAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAkocmV2aXNpb24g
NTgxNjMpCisrKyBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsNiArNzgsNyBAQCB2b2lkIFF1YWxpZmllZE5hbWU6OmRlcmVmKCkKICAgICBpZiAoIW1f
aW1wbCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCisgICAgQVNTRVJUKCFpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpKTsKIAogICAgIGlmIChtX2ltcGwtPmhhc09uZVJlZigpKQogICAgICAgICBn
TmFtZUNhY2hlLT5yZW1vdmUobV9pbXBsKTsKSW5kZXg6IFdlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgJKHJldmlzaW9u
IDU4MTYzKQorKysgV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFF1YWxpZmllZE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgUXVhbGlmaWVkTmFtZShjb25zdCBBdG9taWNT
dHJpbmcmIHByZWZpeCwgY29uc3QgY2hhciogbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSk7CisgICAgUXVhbGlmaWVkTmFtZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpIDogbV9pbXBsKGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKSB7IH0KKyAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID09IGhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAgICAgflF1YWxpZmllZE5hbWUoKSB7IGRlcmVmKCk7IH0K
ICNpZmRlZiBRTkFNRV9ERUZBVUxUX0NPTlNUUlVDVE9SCiAgICAgUXVhbGlmaWVkTmFtZSgpIDog
bV9pbXBsKDApIHsgfQpAQCAtOTIsNiArOTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdChj
b25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAgICB2b2lkIHJlZigpIGNvbnN0
IHsgbV9pbXBsLT5yZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKTsKKworICAgIHN0YXRpYyBRdWFs
aWZpZWROYW1lSW1wbCogaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gUmVmUHRyPFF1
YWxpZmllZE5hbWVJbXBsPjo6aGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICAKICAgICBR
dWFsaWZpZWROYW1lSW1wbCogbV9pbXBsOwogfTsKQEAgLTE2Nyw4ICsxNzEsOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlF1YWxp
ZmllZE5hbWU+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6UXVhbGlmaWVkTmFtZT4gewog
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAg
ICAgIHN0YXRpYyBXZWJDb3JlOjpRdWFsaWZpZWROYW1lIGVtcHR5VmFsdWUoKSB7IHJldHVybiBX
ZWJDb3JlOjpRdWFsaWZpZWROYW1lKFdlYkNvcmU6Om51bGxBdG9tLCBXZWJDb3JlOjpudWxsQXRv
bSwgV2ViQ29yZTo6bnVsbEF0b20pOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERl
bGV0ZWRWYWx1ZShXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiBzbG90KSB7IG5ldyAoJnNsb3QpIFdl
YkNvcmU6OlF1YWxpZmllZE5hbWUoV2ViQ29yZTo6bnVsbEF0b20sIFdlYkNvcmU6OkF0b21pY1N0
cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWUpLCBXZWJDb3JlOjpudWxsQXRvbSk7IH0KLSAgICAg
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFt
ZSYgc2xvdCkgeyByZXR1cm4gc2xvdC5sb2NhbE5hbWUoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3Jl
OjpRdWFsaWZpZWROYW1lJiBzbG90KSB7IG5ldyAoJnNsb3QpIFdlYkNvcmU6OlF1YWxpZmllZE5h
bWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlz
RGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmIHNsb3QpIHsgcmV0dXJu
IHNsb3QuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogICAgIH07CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>