<?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>58665</bug_id>
          
          <creation_ts>2011-04-15 08:18:04 -0700</creation_ts>
          <short_desc>[WK2] Should strip file:// urls before adding to console message</short_desc>
          <delta_ts>2011-04-15 18:53:22 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>42541</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chang Shu">cshu</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386631</commentid>
    <comment_count>0</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-04-15 08:18:04 -0700</bug_when>
    <thetext>When a message with url embedded is added to console, the &quot;file:&quot; scheme and path should be stripped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386649</commentid>
    <comment_count>1</comment_count>
      <attachid>89794</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-04-15 08:42:22 -0700</bug_when>
    <thetext>Created attachment 89794
fix patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386660</commentid>
    <comment_count>2</comment_count>
      <attachid>89794</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-15 09:08:29 -0700</bug_when>
    <thetext>Comment on attachment 89794
fix patch

Do we have the same logic in DumpRenderTree somewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386664</commentid>
    <comment_count>3</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-04-15 09:12:26 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 89794 [details])
&gt; Do we have the same logic in DumpRenderTree somewhere?

Yes. The DumpRenderTree implementation is platform-dependent. I found the code for Chromium (chromium/WebViewHost.cpp) is actually a platform-independent version and just copied over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386704</commentid>
    <comment_count>4</comment_count>
      <attachid>89794</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-15 10:12:47 -0700</bug_when>
    <thetext>Comment on attachment 89794
fix patch

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

Thanks for the clarification!

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:751
&gt; +static string urlSuitableForTestResult(const string&amp; url)

This function returns a name (lastPathComponent), not a URL, and should be named accordingly.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:754
&gt; +    if (url.empty() || string::npos == url.find(&quot;file://&quot;))
&gt; +        return url;

Shouldn&apos;t this be an ASSERT?

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:766
&gt; +    string filename = url.substr(pos + 1);

This doesn&apos;t seem right when pos is zero, as set in some cases above.

This also doesn&apos;t seem right for URLs ending with a slash. I&apos;m not 100% sure what lastPathComponent does, but it probably doesn&apos;t return an empty string for those.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:768
&gt; +    if (filename.empty())
&gt; +        return &quot;file:&quot;; // A WebKit test has this in its expected output.

I don&apos;t see Mac DumpRenderTree do that, and it&apos;s inconsistent with the rest of the function, which returns a name, not a URL.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:777
&gt; +    string newMessage = toSTD(message);

I&apos;d call it messageString. There is nothing new about this message - it&apos;s the same one that was passed in, possibly slightly massaged to remove paths.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:778
&gt; +    if (!newMessage.empty()) {

I don&apos;t see any need for this check.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:779
&gt; +        size_t fileProtocol = newMessage.find(string(&quot;file://&quot;));

This variable doesn&apos;t contain the protocol, so it would be better to call this fileProtocolStart.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:781
&gt; +            newMessage = newMessage.substr(0, fileProtocol) + urlSuitableForTestResult(newMessage.substr(fileProtocol));

I see that DumpRenderTree implementations do the same, but this is obviously incorrect. There can be additional text after the URL, or there could be multiple URLs in the message. This is worth a comment (you could explain how this is broken, and that it matches DumpRenderTree).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386789</commentid>
    <comment_count>5</comment_count>
      <attachid>89823</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-04-15 11:53:55 -0700</bug_when>
    <thetext>Created attachment 89823
fix patch 2: follow review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386807</commentid>
    <comment_count>6</comment_count>
      <attachid>89823</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-15 12:09:55 -0700</bug_when>
    <thetext>Comment on attachment 89823
fix patch 2: follow review

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

This looks generally right, but I had enough comments to justify another short review round.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:751
&gt; +static string lastPathComponent(const string&amp; path)

It&apos;s not clear from the name if we are dealing with URL paths or OS ones. This confusion spills into actual code, so I suggest improving the name (maybe lastURLPathComponent()?).

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:758
&gt; +#if OS(WINDOWS)
&gt; +    char delim = &apos;\\&apos;;

Is this actually true? I strongly doubt it, we use forward slashes for file URLs in KURL.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:763
&gt; +    if (tmpPath[tmpPath.length() - 1] == delim)

This will be an out of bounds read if the passed string is &quot;file://&quot;.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:764
&gt; +        tmpPath = path.substr(0, tmpPath.length() - 1);

This should be tmpPath.substr(), not path.substr(). Also, you can just use remove().

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:778
&gt; +    size_t fileProtocolStart = messageString.find(string(&quot;file://&quot;));

I don&apos;t think that explicitly constructing a string is necessary here.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:780
&gt; +        // FIXME: The code below does not handle additional texts after url nor multiple urls.

s/texts/text/. It might make sense to mention that this matches DumpRenderTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386822</commentid>
    <comment_count>7</comment_count>
      <attachid>89828</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-04-15 12:33:18 -0700</bug_when>
    <thetext>Created attachment 89828
fix patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386831</commentid>
    <comment_count>8</comment_count>
      <attachid>89828</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-15 12:40:25 -0700</bug_when>
    <thetext>Comment on attachment 89828
fix patch 3

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

r=me unless you decide to switch to KURL, which would require a new review.

&gt; Tools/ChangeLog:10
&gt; +        (WTR::lastPathComponent):

This function has a different name now.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:751
&gt; +static string lastURLPathComponent(const string&amp; path)

I just realized that since we&apos;re asserting that it starts with file://, the name should be lastFileURLPathComponent(). Sorry for a bad suggestion previously.

Also, can we use KURL here? That would obviously be much cleaner than writing custom code.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:757
&gt; +    if (!tmpPath.empty()) {

We prefer early returns to indenting code in if blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386855</commentid>
    <comment_count>9</comment_count>
      <attachid>89838</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-04-15 13:01:06 -0700</bug_when>
    <thetext>Created attachment 89838
fix patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387152</commentid>
    <comment_count>10</comment_count>
      <attachid>89838</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-15 18:53:18 -0700</bug_when>
    <thetext>Comment on attachment 89838
fix patch 4

Clearing flags on attachment: 89838

Committed r84070: &lt;http://trac.webkit.org/changeset/84070&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387153</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-15 18:53:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89794</attachid>
            <date>2011-04-15 08:42:22 -0700</date>
            <delta_ts>2011-04-15 11:53:55 -0700</delta_ts>
            <desc>fix patch</desc>
            <filename>58665_1.patch</filename>
            <type>text/plain</type>
            <size>4535</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgzOTc1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMDQtMTUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbWVzc2Fn
ZSB3aXRoIHVybCBlbWJlZGRlZCBpcyBhZGRlZCB0byBjb25zb2xlLCB0aGUgImZpbGU6IiBzY2hl
bWUKKyAgICAgICAgYW5kIHBhdGggc2hvdWxkIGJlIHN0cmlwcGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NjUKKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAg
ICAgKFdUUjo6dXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6CisKIDIwMTEtMDQtMTUgIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1paGFp
IFBhcnBhcml0YS4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDgzOTY1
KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDgsMTMgKzc0OCwzOSBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpCiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRC
dW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT53aWxsUnVuSmF2YVNj
cmlwdFByb21wdChtZXNzYWdlLCBkZWZhdWx0VmFsdWUsIGZyYW1lKTsKIH0KIAorc3RhdGljIHN0
cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3Qgc3RyaW5nJiB1cmwpCit7CisgICAg
aWYgKHVybC5lbXB0eSgpIHx8IHN0cmluZzo6bnBvcyA9PSB1cmwuZmluZCgiZmlsZTovLyIpKQor
ICAgICAgICByZXR1cm4gdXJsOworCisgICAgc2l6ZV90IHBvcyA9IHVybC5yZmluZCgnLycpOwor
ICAgIGlmIChwb3MgPT0gc3RyaW5nOjpucG9zKSB7CisjaWYgT1MoV0lORE9XUykKKyAgICAgICAg
cG9zID0gdXJsLnJmaW5kKCdcXCcpOworICAgICAgICBpZiAocG9zID09IHN0cmluZzo6bnBvcykK
KyAgICAgICAgICAgIHBvcyA9IDA7CisjZWxzZQorICAgICAgICBwb3MgPSAwOworI2VuZGlmCisg
ICAgfQorICAgIHN0cmluZyBmaWxlbmFtZSA9IHVybC5zdWJzdHIocG9zICsgMSk7CisgICAgaWYg
KGZpbGVuYW1lLmVtcHR5KCkpCisgICAgICAgIHJldHVybiAiZmlsZToiOyAvLyBBIFdlYktpdCB0
ZXN0IGhhcyB0aGlzIGluIGl0cyBleHBlY3RlZCBvdXRwdXQuCisgICAgcmV0dXJuIGZpbGVuYW1l
OworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUo
V0tTdHJpbmdSZWYgbWVzc2FnZSwgdWludDMyX3QgbGluZU51bWJlcikKIHsKICAgICBpZiAoIUlu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIC8vIEZJWE1FOiBTdHJpcCBmaWxlOiB1cmxzLgotICAgIEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5vcygpIDw8ICJDT05TT0xFIE1FU1NBR0U6IGxpbmUgIiA8PCBsaW5lTnVtYmVyIDw8
ICI6ICIgPDwgbWVzc2FnZSA8PCAiXG4iOworICAgIHN0cmluZyBuZXdNZXNzYWdlID0gdG9TVEQo
bWVzc2FnZSk7CisgICAgaWYgKCFuZXdNZXNzYWdlLmVtcHR5KCkpIHsKKyAgICAgICAgc2l6ZV90
IGZpbGVQcm90b2NvbCA9IG5ld01lc3NhZ2UuZmluZChzdHJpbmcoImZpbGU6Ly8iKSk7CisgICAg
ICAgIGlmIChmaWxlUHJvdG9jb2wgIT0gc3RyaW5nOjpucG9zKQorICAgICAgICAgICAgbmV3TWVz
c2FnZSA9IG5ld01lc3NhZ2Uuc3Vic3RyKDAsIGZpbGVQcm90b2NvbCkgKyB1cmxTdWl0YWJsZUZv
clRlc3RSZXN1bHQobmV3TWVzc2FnZS5zdWJzdHIoZmlsZVByb3RvY29sKSk7CisgICAgfQorICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJDT05TT0xFIE1FU1NBR0U6IGxpbmUg
IiA8PCBsaW5lTnVtYmVyIDw8ICI6ICIgPDwgbmV3TWVzc2FnZSA8PCAiXG4iOwogfQogCiB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNldFN0YXR1c2JhclRleHQoV0tTdHJpbmdSZWYgc3Rh
dHVzYmFyVGV4dCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzOTc1KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDQtMTUgIENoYW5n
IFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGVuIGEgbWVzc2FnZSB3aXRoIHVybCBlbWJlZGRlZCBpcyBhZGRl
ZCB0byBjb25zb2xlLCB0aGUgImZpbGU6IiBzY2hlbWUKKyAgICAgICAgYW5kIHBhdGggc2hvdWxk
IGJlIHN0cmlwcGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTg2NjUKKworICAgICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9Ta2lw
cGVkOgorCiAyMDExLTA0LTE1ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZGVkIG5ldyBHVEsrIHRlc3QgZXhwZWN0YXRp
b25zLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAkocmV2aXNpb24gODM5
NjUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQJKHdvcmtpbmcgY29w
eSkKQEAgLTE4ODYsNyArMTg4Niw2IEBAIGZhc3Qvb3ZlcmZsb3cvb3ZlcmZsb3dfaGlkZGVuLmh0
bWwKIGZhc3Qvd29ya2Vycy9zdG9yYWdlL2ludGVycnVwdC1kYXRhYmFzZS1zeW5jLmh0bWwKIGZh
c3Qvd29ya2Vycy9zdG9yYWdlL2ludGVycnVwdC1kYXRhYmFzZS5odG1sCiBmYXN0L3dvcmtlcnMv
c3RvcmFnZS91c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFuZC13b3JrZXJzLmh0bWwKLWZhc3Qv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tZmlsZS1hY2Nlc3MuaHRtbAogZmFzdC94
bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1ub25leGlzdGVudC1maWxlLmh0bWwKIGh0dHAv
dGVzdHMvYXBwY2FjaGUvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS1tYWluLmh0bWwK
IGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFsbGJhY2suaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQtd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQtd2syL1NraXBwZWQJKHJldmlzaW9uIDgzOTY1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQtd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIxNTEsNyArMjE1MSw2IEBAIGZhc3Qv
cGFyc2VyL2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmgKIGZhc3QvdGFibGUvZ2lhbnRDZWxs
c3BhY2luZy5odG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9jaGFuZ2UtdmVyc2lvbi1oYW5kbGUt
cmV1c2Utc3luYy5odG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS1kYXRhYmFzZXMt
Z2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwKLWZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3Qtbm8tZmlsZS1hY2Nlc3MuaHRtbAogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1ub25leGlzdGVudC1maWxlLmh0bWwKIHN0b3JhZ2Uvb3Blbi1kYXRhYmFzZS13aGlsZS10cmFu
c2FjdGlvbi1pbi1wcm9ncmVzcy5odG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFi
YXNlLWNyZWF0aW9uLWNhbGxiYWNrLXN5bmMuaHRtbAo=
</data>
<flag name="review"
          id="82507"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89823</attachid>
            <date>2011-04-15 11:53:55 -0700</date>
            <delta_ts>2011-04-15 12:33:18 -0700</delta_ts>
            <desc>fix patch 2: follow review</desc>
            <filename>58665_2.patch</filename>
            <type>text/plain</type>
            <size>4640</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0MDAyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMDQtMTUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbWVzc2Fn
ZSB3aXRoIHVybCBlbWJlZGRlZCBpcyBhZGRlZCB0byBjb25zb2xlLCB0aGUgImZpbGU6IiBzY2hl
bWUKKyAgICAgICAgYW5kIHBhdGggc2hvdWxkIGJlIHN0cmlwcGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NjUKKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAg
ICAgKFdUUjo6bGFzdFBhdGhDb21wb25lbnQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZVBhZ2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKwogMjAxMS0wNC0xNSAgT2phbiBWYWZh
aSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gODM5NjUpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc0OCwxMyArNzQ4LDM5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjp3aWxsUnVuSmF2YVNjcmkKICAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2Uq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0
KG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUpOwogfQogCitzdGF0aWMgc3RyaW5nIGxhc3RQ
YXRoQ29tcG9uZW50KGNvbnN0IHN0cmluZyYgcGF0aCkKK3sKKyAgICBzaXplX3QgcG9zID0gcGF0
aC5maW5kKCJmaWxlOi8vIik7CisgICAgQVNTRVJUKHN0cmluZzo6bnBvcyAhPSBwb3MpOworCisg
ICAgc3RyaW5nIHRtcFBhdGggPSBwYXRoLnN1YnN0cihwb3MgKyA3KTsKKyNpZiBPUyhXSU5ET1dT
KQorICAgIGNoYXIgZGVsaW0gPSAnXFwnOworI2Vsc2UKKyAgICBjaGFyIGRlbGltID0gJy8nOwor
I2VuZGlmCisgICAgLy8gUmVtb3ZlIHRoZSB0cmFpbGluZyBkZWxpbWl0ZXIKKyAgICBpZiAodG1w
UGF0aFt0bXBQYXRoLmxlbmd0aCgpIC0gMV0gPT0gZGVsaW0pCisgICAgICAgIHRtcFBhdGggPSBw
YXRoLnN1YnN0cigwLCB0bXBQYXRoLmxlbmd0aCgpIC0gMSk7CisKKyAgICBwb3MgPSB0bXBQYXRo
LnJmaW5kKGRlbGltKTsKKyAgICBpZiAoc3RyaW5nOjpucG9zICE9IHBvcykKKyAgICAgICAgcmV0
dXJuIHRtcFBhdGguc3Vic3RyKHBvcyArIDEpOworICAgIHJldHVybiB0bXBQYXRoOworfQorCiB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdS
ZWYgbWVzc2FnZSwgdWludDMyX3QgbGluZU51bWJlcikKIHsKICAgICBpZiAoIUluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8v
IEZJWE1FOiBTdHJpcCBmaWxlOiB1cmxzLgotICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5v
cygpIDw8ICJDT05TT0xFIE1FU1NBR0U6IGxpbmUgIiA8PCBsaW5lTnVtYmVyIDw8ICI6ICIgPDwg
bWVzc2FnZSA8PCAiXG4iOworICAgIHN0cmluZyBtZXNzYWdlU3RyaW5nID0gdG9TVEQobWVzc2Fn
ZSk7CisgICAgc2l6ZV90IGZpbGVQcm90b2NvbFN0YXJ0ID0gbWVzc2FnZVN0cmluZy5maW5kKHN0
cmluZygiZmlsZTovLyIpKTsKKyAgICBpZiAoZmlsZVByb3RvY29sU3RhcnQgIT0gc3RyaW5nOjpu
cG9zKQorICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGFk
ZGl0aW9uYWwgdGV4dHMgYWZ0ZXIgdXJsIG5vciBtdWx0aXBsZSB1cmxzLgorICAgICAgICBtZXNz
YWdlU3RyaW5nID0gbWVzc2FnZVN0cmluZy5zdWJzdHIoMCwgZmlsZVByb3RvY29sU3RhcnQpICsg
bGFzdFBhdGhDb21wb25lbnQobWVzc2FnZVN0cmluZy5zdWJzdHIoZmlsZVByb3RvY29sU3RhcnQp
KTsKKworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJDT05TT0xFIE1FU1NB
R0U6IGxpbmUgIiA8PCBsaW5lTnVtYmVyIDw8ICI6ICIgPDwgbWVzc2FnZVN0cmluZyA8PCAiXG4i
OwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFNldFN0YXR1c2JhclRleHQoV0tT
dHJpbmdSZWYgc3RhdHVzYmFyVGV4dCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0MDAyKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEt
MDQtMTUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbWVzc2FnZSB3aXRoIHVybCBlbWJl
ZGRlZCBpcyBhZGRlZCB0byBjb25zb2xlLCB0aGUgImZpbGU6IiBzY2hlbWUKKyAgICAgICAgYW5k
IHBhdGggc2hvdWxkIGJlIHN0cmlwcGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NjUKKworICAgICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0LXdrMi9Ta2lwcGVkOgorCiAyMDExLTA0LTE1ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGR1cGxpY2F0ZSBleHBlY3RhdGlvbiBmb3IgY29t
cG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1nLmh0bWwgb24gY2hyb21pdW0gbWFjLgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAkocmV2aXNpb24gODM5NjUpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTE4
ODYsNyArMTg4Niw2IEBAIGZhc3Qvb3ZlcmZsb3cvb3ZlcmZsb3dfaGlkZGVuLmh0bWwKIGZhc3Qv
d29ya2Vycy9zdG9yYWdlL2ludGVycnVwdC1kYXRhYmFzZS1zeW5jLmh0bWwKIGZhc3Qvd29ya2Vy
cy9zdG9yYWdlL2ludGVycnVwdC1kYXRhYmFzZS5odG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS91
c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFuZC13b3JrZXJzLmh0bWwKLWZhc3QveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tZmlsZS1hY2Nlc3MuaHRtbAogZmFzdC94bWxodHRwcmVx
dWVzdC94bWxodHRwcmVxdWVzdC1ub25leGlzdGVudC1maWxlLmh0bWwKIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS1tYWluLmh0bWwKIGh0dHAvdGVz
dHMvYXBwY2FjaGUvZmFsbGJhY2suaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQt
d2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1Nr
aXBwZWQJKHJldmlzaW9uIDgzOTY1KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIxNTEsNyArMjE1MSw2IEBAIGZhc3QvcGFyc2VyL2Rv
Y3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmgKIGZhc3QvdGFibGUvZ2lhbnRDZWxsc3BhY2luZy5o
dG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9jaGFuZ2UtdmVyc2lvbi1oYW5kbGUtcmV1c2Utc3lu
Yy5odG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9tdWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1j
b2xsZWN0aW9uLmh0bWwKLWZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tZmls
ZS1hY2Nlc3MuaHRtbAogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1ub25leGlz
dGVudC1maWxlLmh0bWwKIHN0b3JhZ2Uvb3Blbi1kYXRhYmFzZS13aGlsZS10cmFuc2FjdGlvbi1p
bi1wcm9ncmVzcy5odG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9vcGVuLWRhdGFiYXNlLWNyZWF0
aW9uLWNhbGxiYWNrLXN5bmMuaHRtbAo=
</data>
<flag name="review"
          id="82530"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89828</attachid>
            <date>2011-04-15 12:33:18 -0700</date>
            <delta_ts>2011-04-15 13:01:06 -0700</delta_ts>
            <desc>fix patch 3</desc>
            <filename>58665_3.patch</filename>
            <type>text/plain</type>
            <size>4647</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0MDAyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMDQtMTUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbWVzc2Fn
ZSB3aXRoIHVybCBlbWJlZGRlZCBpcyBhZGRlZCB0byBjb25zb2xlLCB0aGUgImZpbGU6IiBzY2hl
bWUKKyAgICAgICAgYW5kIHBhdGggc2hvdWxkIGJlIHN0cmlwcGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NjUKKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAg
ICAgKFdUUjo6bGFzdFBhdGhDb21wb25lbnQpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZVBhZ2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKwogMjAxMS0wNC0xNSAgT2phbiBWYWZh
aSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gODM5NjUpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc0OCwxMyArNzQ4LDM2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjp3aWxsUnVuSmF2YVNjcmkKICAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2Uq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0
KG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUpOwogfQogCitzdGF0aWMgc3RyaW5nIGxhc3RV
UkxQYXRoQ29tcG9uZW50KGNvbnN0IHN0cmluZyYgcGF0aCkKK3sKKyAgICBzaXplX3QgcG9zID0g
cGF0aC5maW5kKCJmaWxlOi8vIik7CisgICAgQVNTRVJUKHN0cmluZzo6bnBvcyAhPSBwb3MpOwor
CisgICAgc3RyaW5nIHRtcFBhdGggPSBwYXRoLnN1YnN0cihwb3MgKyA3KTsKKyAgICBpZiAoIXRt
cFBhdGguZW1wdHkoKSkgeworICAgICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGRlbGltaXRl
cgorICAgICAgICBpZiAodG1wUGF0aFt0bXBQYXRoLmxlbmd0aCgpIC0gMV0gPT0gJy8nKQorICAg
ICAgICAgICAgdG1wUGF0aC5lcmFzZSh0bXBQYXRoLmxlbmd0aCgpIC0gMSk7CisKKyAgICAgICAg
cG9zID0gdG1wUGF0aC5yZmluZCgnLycpOworICAgICAgICBpZiAoc3RyaW5nOjpucG9zICE9IHBv
cykKKyAgICAgICAgICAgIHJldHVybiB0bXBQYXRoLnN1YnN0cihwb3MgKyAxKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRtcFBhdGg7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsQWRk
TWVzc2FnZVRvQ29uc29sZShXS1N0cmluZ1JlZiBtZXNzYWdlLCB1aW50MzJfdCBsaW5lTnVtYmVy
KQogewogICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmcoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFN0cmlwIGZpbGU6IHVybHMuCi0gICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIkNPTlNPTEUgTUVTU0FHRTogbGluZSAi
IDw8IGxpbmVOdW1iZXIgPDwgIjogIiA8PCBtZXNzYWdlIDw8ICJcbiI7CisgICAgc3RyaW5nIG1l
c3NhZ2VTdHJpbmcgPSB0b1NURChtZXNzYWdlKTsKKyAgICBzaXplX3QgZmlsZVByb3RvY29sU3Rh
cnQgPSBtZXNzYWdlU3RyaW5nLmZpbmQoImZpbGU6Ly8iKTsKKyAgICBpZiAoZmlsZVByb3RvY29s
U3RhcnQgIT0gc3RyaW5nOjpucG9zKQorICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUgYmVsb3cg
ZG9lcyBub3QgaGFuZGxlIGFkZGl0aW9uYWwgdGV4dCBhZnRlciB1cmwgbm9yIG11bHRpcGxlIHVy
bHMuIFRoaXMgbWF0Y2hlcyBEdW1wUmVuZGVyVHJlZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
bWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VTdHJpbmcuc3Vic3RyKDAsIGZpbGVQcm90b2NvbFN0YXJ0
KSArIGxhc3RVUkxQYXRoQ29tcG9uZW50KG1lc3NhZ2VTdHJpbmcuc3Vic3RyKGZpbGVQcm90b2Nv
bFN0YXJ0KSk7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiQ09OU09M
RSBNRVNTQUdFOiBsaW5lICIgPDwgbGluZU51bWJlciA8PCAiOiAiIDw8IG1lc3NhZ2VTdHJpbmcg
PDwgIlxuIjsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxTZXRTdGF0dXNiYXJU
ZXh0KFdLU3RyaW5nUmVmIHN0YXR1c2JhclRleHQpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NDAwMikK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDExLTA0LTE1ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIG1lc3NhZ2Ugd2l0aCB1
cmwgZW1iZWRkZWQgaXMgYWRkZWQgdG8gY29uc29sZSwgdGhlICJmaWxlOiIgc2NoZW1lCisgICAg
ICAgIGFuZCBwYXRoIHNob3VsZCBiZSBzdHJpcHBlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NjY1CisKKyAgICAgICAgVW5za2lwIHBhc3NlZCB0
ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvU2tpcHBlZDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC13azIvU2tpcHBlZDoKKwogMjAxMS0wNC0xNSAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBkdXBsaWNhdGUgZXhwZWN0YXRpb24g
Zm9yIGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sIG9uIGNocm9taXVtIG1h
Yy4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQJKHJldmlzaW9uIDgzOTY1
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkp
CkBAIC0xODg2LDcgKzE4ODYsNiBAQCBmYXN0L292ZXJmbG93L292ZXJmbG93X2hpZGRlbi5odG1s
CiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9pbnRlcnJ1cHQtZGF0YWJhc2Utc3luYy5odG1sCiBmYXN0
L3dvcmtlcnMvc3RvcmFnZS9pbnRlcnJ1cHQtZGF0YWJhc2UuaHRtbAogZmFzdC93b3JrZXJzL3N0
b3JhZ2UvdXNlLXNhbWUtZGF0YWJhc2UtaW4tcGFnZS1hbmQtd29ya2Vycy5odG1sCi1mYXN0L3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LW5vLWZpbGUtYWNjZXNzLmh0bWwKIGZhc3QveG1s
aHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtbm9uZXhpc3RlbnQtZmlsZS5odG1sCiBodHRwL3Rl
c3RzL2FwcGNhY2hlL2RpZmZlcmVudC1odHRwcy1vcmlnaW4tcmVzb3VyY2UtbWFpbi5odG1sCiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL2ZhbGxiYWNrLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL3F0LXdrMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0
LXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA4Mzk2NSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0
LXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUxLDcgKzIxNTEsNiBAQCBmYXN0L3Bh
cnNlci9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC5oCiBmYXN0L3RhYmxlL2dpYW50Q2VsbHNw
YWNpbmcuaHRtbAogZmFzdC93b3JrZXJzL3N0b3JhZ2UvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJl
dXNlLXN5bmMuaHRtbAogZmFzdC93b3JrZXJzL3N0b3JhZ2UvbXVsdGlwbGUtZGF0YWJhc2VzLWdh
cmJhZ2UtY29sbGVjdGlvbi5odG1sCi1mYXN0L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0
LW5vLWZpbGUtYWNjZXNzLmh0bWwKIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qt
bm9uZXhpc3RlbnQtZmlsZS5odG1sCiBzdG9yYWdlL29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNh
Y3Rpb24taW4tcHJvZ3Jlc3MuaHRtbAogZmFzdC93b3JrZXJzL3N0b3JhZ2Uvb3Blbi1kYXRhYmFz
ZS1jcmVhdGlvbi1jYWxsYmFjay1zeW5jLmh0bWwK
</data>
<flag name="review"
          id="82537"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89838</attachid>
            <date>2011-04-15 13:01:06 -0700</date>
            <delta_ts>2011-04-15 18:53:18 -0700</delta_ts>
            <desc>fix patch 4</desc>
            <filename>58665_4.patch</filename>
            <type>text/plain</type>
            <size>4667</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0MDAyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMDQtMTUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIFdoZW4gYSBt
ZXNzYWdlIHdpdGggdXJsIGVtYmVkZGVkIGlzIGFkZGVkIHRvIGNvbnNvbGUsIHRoZSAiZmlsZToi
IHNjaGVtZQorICAgICAgICBhbmQgcGF0aCBzaG91bGQgYmUgc3RyaXBwZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODY2NQorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgor
ICAgICAgICAoV1RSOjpsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQpOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKwogMjAxMS0wNC0x
NSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gODM5
NjUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0OCwxMyArNzQ4LDM4IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmkKICAgICBzdGF0aWNfY2FzdDxJbmplY3Rl
ZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPndpbGxSdW5KYXZh
U2NyaXB0UHJvbXB0KG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgZnJhbWUpOwogfQogCitzdGF0aWMg
c3RyaW5nIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudChjb25zdCBzdHJpbmcmIHBhdGgpCit7Cisg
ICAgc2l6ZV90IHBvcyA9IHBhdGguZmluZCgiZmlsZTovLyIpOworICAgIEFTU0VSVChzdHJpbmc6
Om5wb3MgIT0gcG9zKTsKKworICAgIHN0cmluZyB0bXBQYXRoID0gcGF0aC5zdWJzdHIocG9zICsg
Nyk7CisgICAgaWYgKHRtcFBhdGguZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRtcFBhdGg7CisK
KyAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGRlbGltaXRlcgorICAgIGlmICh0bXBQYXRoW3Rt
cFBhdGgubGVuZ3RoKCkgLSAxXSA9PSAnLycpCisgICAgICAgIHRtcFBhdGguZXJhc2UodG1wUGF0
aC5sZW5ndGgoKSAtIDEpOworCisgICAgcG9zID0gdG1wUGF0aC5yZmluZCgnLycpOworICAgIGlm
IChzdHJpbmc6Om5wb3MgIT0gcG9zKQorICAgICAgICByZXR1cm4gdG1wUGF0aC5zdWJzdHIocG9z
ICsgMSk7CisKKyAgICByZXR1cm4gdG1wUGF0aDsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKFdLU3RyaW5nUmVmIG1lc3NhZ2UsIHVpbnQzMl90
IGxpbmVOdW1iZXIpCiB7CiAgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuaXNUZXN0
UnVubmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogU3RyaXAgZmlsZTog
dXJscy4KLSAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiQ09OU09MRSBNRVNT
QUdFOiBsaW5lICIgPDwgbGluZU51bWJlciA8PCAiOiAiIDw8IG1lc3NhZ2UgPDwgIlxuIjsKKyAg
ICBzdHJpbmcgbWVzc2FnZVN0cmluZyA9IHRvU1REKG1lc3NhZ2UpOworICAgIHNpemVfdCBmaWxl
UHJvdG9jb2xTdGFydCA9IG1lc3NhZ2VTdHJpbmcuZmluZCgiZmlsZTovLyIpOworICAgIGlmIChm
aWxlUHJvdG9jb2xTdGFydCAhPSBzdHJpbmc6Om5wb3MpCisgICAgICAgIC8vIEZJWE1FOiBUaGUg
Y29kZSBiZWxvdyBkb2VzIG5vdCBoYW5kbGUgYWRkaXRpb25hbCB0ZXh0IGFmdGVyIHVybCBub3Ig
bXVsdGlwbGUgdXJscy4gVGhpcyBtYXRjaGVzIER1bXBSZW5kZXJUcmVlIGltcGxlbWVudGF0aW9u
LgorICAgICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZVN0cmluZy5zdWJzdHIoMCwgZmlsZVBy
b3RvY29sU3RhcnQpICsgbGFzdEZpbGVVUkxQYXRoQ29tcG9uZW50KG1lc3NhZ2VTdHJpbmcuc3Vi
c3RyKGZpbGVQcm90b2NvbFN0YXJ0KSk7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
b3MoKSA8PCAiQ09OU09MRSBNRVNTQUdFOiBsaW5lICIgPDwgbGluZU51bWJlciA8PCAiOiAiIDw8
IG1lc3NhZ2VTdHJpbmcgPDwgIlxuIjsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6Ondp
bGxTZXRTdGF0dXNiYXJUZXh0KFdLU3RyaW5nUmVmIHN0YXR1c2JhclRleHQpCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4NDAwMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDExLTA0LTE1ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBX
aGVuIGEgbWVzc2FnZSB3aXRoIHVybCBlbWJlZGRlZCBpcyBhZGRlZCB0byBjb25zb2xlLCB0aGUg
ImZpbGU6IiBzY2hlbWUKKyAgICAgICAgYW5kIHBhdGggc2hvdWxkIGJlIHN0cmlwcGVkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg2NjUKKworICAg
ICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkOgorCiAyMDExLTA0LTE1
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGR1
cGxpY2F0ZSBleHBlY3RhdGlvbiBmb3IgY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItaW1n
Lmh0bWwgb24gY2hyb21pdW0gbWFjLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tp
cHBlZAkocmV2aXNpb24gODM5NjUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTE4ODYsNyArMTg4Niw2IEBAIGZhc3Qvb3ZlcmZsb3cv
b3ZlcmZsb3dfaGlkZGVuLmh0bWwKIGZhc3Qvd29ya2Vycy9zdG9yYWdlL2ludGVycnVwdC1kYXRh
YmFzZS1zeW5jLmh0bWwKIGZhc3Qvd29ya2Vycy9zdG9yYWdlL2ludGVycnVwdC1kYXRhYmFzZS5o
dG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS91c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFuZC13
b3JrZXJzLmh0bWwKLWZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tZmlsZS1h
Y2Nlc3MuaHRtbAogZmFzdC94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1ub25leGlzdGVu
dC1maWxlLmh0bWwKIGh0dHAvdGVzdHMvYXBwY2FjaGUvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1y
ZXNvdXJjZS1tYWluLmh0bWwKIGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFsbGJhY2suaHRtbApJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHJldmlzaW9uIDgzOTY1KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIxNTEs
NyArMjE1MSw2IEBAIGZhc3QvcGFyc2VyL2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmgKIGZh
c3QvdGFibGUvZ2lhbnRDZWxsc3BhY2luZy5odG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9jaGFu
Z2UtdmVyc2lvbi1oYW5kbGUtcmV1c2Utc3luYy5odG1sCiBmYXN0L3dvcmtlcnMvc3RvcmFnZS9t
dWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLmh0bWwKLWZhc3QveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3Qtbm8tZmlsZS1hY2Nlc3MuaHRtbAogZmFzdC94bWxodHRwcmVx
dWVzdC94bWxodHRwcmVxdWVzdC1ub25leGlzdGVudC1maWxlLmh0bWwKIHN0b3JhZ2Uvb3Blbi1k
YXRhYmFzZS13aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy5odG1sCiBmYXN0L3dvcmtlcnMv
c3RvcmFnZS9vcGVuLWRhdGFiYXNlLWNyZWF0aW9uLWNhbGxiYWNrLXN5bmMuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>