<?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>46091</bug_id>
          
          <creation_ts>2010-09-20 07:56:47 -0700</creation_ts>
          <short_desc>Add WebKit2 API to load a string as plain text</short_desc>
          <delta_ts>2010-09-20 08:08:57 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281541</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-20 07:56:47 -0700</bug_when>
    <thetext>Add WebKit2 API to load a string as plain text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281543</commentid>
    <comment_count>1</comment_count>
      <attachid>68083</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-20 07:57:57 -0700</bug_when>
    <thetext>Created attachment 68083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281550</commentid>
    <comment_count>2</comment_count>
      <attachid>68083</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-09-20 08:03:13 -0700</bug_when>
    <thetext>Comment on attachment 68083
Patch

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

&gt; WebKit2/WebProcess/WebPage/WebPage.cpp:257
&gt; +void WebPage::commonLoadData(PassRefPtr&lt;SharedBuffer&gt; sharedBuffer, const String&amp; MIMEType, const String&amp; encodingName, const KURL&amp; baseURL, const KURL&amp; failingURL)
&gt; +{
&gt; +    ResourceRequest request(baseURL);
&gt; +    SubstituteData substituteData(sharedBuffer, MIMEType, encodingName, failingURL);
&gt; +    m_mainFrame-&gt;coreFrame()-&gt;loader()-&gt;load(request, substituteData, false);
&gt; +}

I don&apos;t think there&apos;s any need for &quot;common&quot; in this function name.

&gt; WebKit2/WebProcess/WebPage/WebPage.cpp:270
&gt;  void WebPage::loadHTMLString(const String&amp; htmlString, const String&amp; baseURLString)
&gt;  {
&gt;      RefPtr&lt;SharedBuffer&gt; sharedBuffer = SharedBuffer::create(reinterpret_cast&lt;const char*&gt;(htmlString.characters()), htmlString.length() * sizeof(UChar));
&gt; -    String MIMEType(&quot;text/html&quot;);
&gt; -    String encodingName(&quot;utf-16&quot;);
&gt;      KURL baseURL = baseURLString.isEmpty() ? blankURL() : KURL(KURL(), baseURLString);
&gt; -    KURL failingURL;
&gt; -
&gt; -    ResourceRequest request(baseURL);
&gt; -    SubstituteData substituteData(sharedBuffer.release(), MIMEType, encodingName, failingURL);
&gt; +    commonLoadData(sharedBuffer, &quot;text/html&quot;, &quot;utf-16&quot;, baseURL, KURL());
&gt; +}
&gt;  
&gt; -    m_mainFrame-&gt;coreFrame()-&gt;loader()-&gt;load(request, substituteData, false);
&gt; +void WebPage::loadPlainTextString(const String&amp; string)
&gt; +{
&gt; +    RefPtr&lt;SharedBuffer&gt; sharedBuffer = SharedBuffer::create(reinterpret_cast&lt;const char*&gt;(string.characters()), string.length() * sizeof(UChar));
&gt; +    commonLoadData(sharedBuffer, &quot;text/plain&quot;, &quot;utf-16&quot;, blankURL(), KURL());
&gt;  }

Neither of these functions seems prepared to handle sharedBuffer outliving the string it&apos;s constructed from. Is that a problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281552</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-20 08:08:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 68083 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68083&amp;action=review
&gt; 
&gt; &gt; WebKit2/WebProcess/WebPage/WebPage.cpp:257
&gt; &gt; +void WebPage::commonLoadData(PassRefPtr&lt;SharedBuffer&gt; sharedBuffer, const String&amp; MIMEType, const String&amp; encodingName, const KURL&amp; baseURL, const KURL&amp; failingURL)
&gt; &gt; +{
&gt; &gt; +    ResourceRequest request(baseURL);
&gt; &gt; +    SubstituteData substituteData(sharedBuffer, MIMEType, encodingName, failingURL);
&gt; &gt; +    m_mainFrame-&gt;coreFrame()-&gt;loader()-&gt;load(request, substituteData, false);
&gt; &gt; +}
&gt; 
&gt; I don&apos;t think there&apos;s any need for &quot;common&quot; in this function name.

Changed to loadData.

&gt; 
&gt; &gt; WebKit2/WebProcess/WebPage/WebPage.cpp:270
&gt; &gt;  void WebPage::loadHTMLString(const String&amp; htmlString, const String&amp; baseURLString)
&gt; &gt;  {
&gt; &gt;      RefPtr&lt;SharedBuffer&gt; sharedBuffer = SharedBuffer::create(reinterpret_cast&lt;const char*&gt;(htmlString.characters()), htmlString.length() * sizeof(UChar));
&gt; &gt; -    String MIMEType(&quot;text/html&quot;);
&gt; &gt; -    String encodingName(&quot;utf-16&quot;);
&gt; &gt;      KURL baseURL = baseURLString.isEmpty() ? blankURL() : KURL(KURL(), baseURLString);
&gt; &gt; -    KURL failingURL;
&gt; &gt; -
&gt; &gt; -    ResourceRequest request(baseURL);
&gt; &gt; -    SubstituteData substituteData(sharedBuffer.release(), MIMEType, encodingName, failingURL);
&gt; &gt; +    commonLoadData(sharedBuffer, &quot;text/html&quot;, &quot;utf-16&quot;, baseURL, KURL());
&gt; &gt; +}
&gt; &gt;  
&gt; &gt; -    m_mainFrame-&gt;coreFrame()-&gt;loader()-&gt;load(request, substituteData, false);
&gt; &gt; +void WebPage::loadPlainTextString(const String&amp; string)
&gt; &gt; +{
&gt; &gt; +    RefPtr&lt;SharedBuffer&gt; sharedBuffer = SharedBuffer::create(reinterpret_cast&lt;const char*&gt;(string.characters()), string.length() * sizeof(UChar));
&gt; &gt; +    commonLoadData(sharedBuffer, &quot;text/plain&quot;, &quot;utf-16&quot;, blankURL(), KURL());
&gt; &gt;  }
&gt; 
&gt; Neither of these functions seems prepared to handle sharedBuffer outliving the string it&apos;s constructed from. Is that a problem?

No, it is not a problem. SharedBuffer will copy the string. We should consider adding a way for the sharedBuffer to adopt an existing buffer (such as one released from a string) though,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281553</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-20 08:08:57 -0700</bug_when>
    <thetext>Landed in r67849.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68083</attachid>
            <date>2010-09-20 07:57:57 -0700</date>
            <delta_ts>2010-09-20 08:03:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>plain.diff</filename>
            <type>text/plain</type>
            <size>7513</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Nzg0OCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDktMjAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2Vi
S2l0MiBBUEkgdG8gbG9hZCBhIHN0cmluZyBhcyBwbGFpbiB0ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjA5MQorCisgICAgICAgICogU2hhcmVk
L0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUxvYWRQbGFpblRleHRTdHJpbmcp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2Fk
UGxhaW5UZXh0U3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjb21tb25Mb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxv
YWRIVE1MU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFBsYWluVGV4dFN0
cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDEwLTA5LTE5ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuCklu
ZGV4OiBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlTWVzc2FnZUtpbmRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZU1lc3Nh
Z2VLaW5kcy5oCShyZXZpc2lvbiA2Nzg0NikKKysrIFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBw
b3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBA
QCBlbnVtIEtpbmQgewogICAgIExvYWRVUkwsCiAgICAgTG9hZFVSTFJlcXVlc3QsCiAgICAgTG9h
ZEhUTUxTdHJpbmcsCisgICAgTG9hZFBsYWluVGV4dFN0cmluZywKICAgICBNb3VzZUV2ZW50LAog
ICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlLAogICAgIFJlYXBwbHlFZGl0Q29tbWFuZCwKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNjc4NDYpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNiArMjUx
LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCAKICAgICBwcm9j
ZXNzKCktPnNlbmQoV2ViUGFnZU1lc3NhZ2U6OkxvYWRIVE1MU3RyaW5nLCBtX3BhZ2VJRCwgQ29y
ZUlQQzo6SW4oaHRtbFN0cmluZywgYmFzZVVSTCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAoIWlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHByb2Nlc3MoKS0+c2VuZChXZWJQYWdlTWVz
c2FnZTo6TG9hZFBsYWluVGV4dFN0cmluZywgbV9wYWdlSUQsIENvcmVJUEM6OkluKHN0cmluZykp
OworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogewogICAgIGlmICghaXNW
YWxpZCgpKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDY3ODQ2KQor
KysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
NSw2ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgbG9hZFVSTFJlcXVlc3QoV2ViVVJMUmVxdWVzdCopOwogICAgIHZvaWQgbG9hZEhU
TUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwp
OworICAgIHZvaWQgbG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZyk7CiAK
ICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAgICAgdm9pZCByZWxvYWQoYm9vbCByZWxvYWRGcm9t
T3JpZ2luKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gNjc4
NDYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw2ICs2MiwxMSBAQCB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5nKFdLUGFnZVJlZiBw
YWdlCiAgICAgdG9XSyhwYWdlUmVmKS0+bG9hZEhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0
cmluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKTsgICAgCiB9CiAKK3ZvaWQgV0tQYWdl
TG9hZFBsYWluVGV4dFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgcGxhaW5U
ZXh0U3RyaW5nUmVmKQoreworICAgIHRvV0socGFnZVJlZiktPmxvYWRQbGFpblRleHRTdHJpbmco
dG9XVEZTdHJpbmcocGxhaW5UZXh0U3RyaW5nUmVmKSk7ICAgIAorfQorCiB2b2lkIFdLUGFnZVN0
b3BMb2FkaW5nKFdLUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHRvV0socGFnZVJlZiktPnN0b3BM
b2FkaW5nKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNjc4NDYp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTcyLDYgKzE3Miw3IEBAIFdLX0VYUE9SVCBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGEK
IFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVy
bCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VMb2FkVVJMUmVxdWVzdChXS1BhZ2VSZWYgcGFnZSwg
V0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3QpOwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZEhU
TUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmcsIFdLVVJMUmVm
IGJhc2VVUkwpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFBsYWluVGV4dFN0cmluZyhXS1Bh
Z2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgcGxhaW5UZXh0U3RyaW5nKTsKIAogV0tfRVhQT1JUIHZv
aWQgV0tQYWdlU3RvcExvYWRpbmcoV0tQYWdlUmVmIHBhZ2UpOwogV0tfRVhQT1JUIHZvaWQgV0tQ
YWdlUmVsb2FkKFdLUGFnZVJlZiBwYWdlKTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA2Nzg0NikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksMTggKzI0OSwyNCBAQCB2b2lk
IFdlYlBhZ2U6OmxvYWRVUkxSZXF1ZXN0KGNvbnN0IFJlc291CiAgICAgbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpLT5sb2FkZXIoKS0+bG9hZChyZXF1ZXN0LCBmYWxzZSk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZTo6Y29tbW9uTG9hZERhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNv
bnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IEtVUkwmIGZhaWxpbmdVUkwpCit7CisgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QoYmFzZVVSTCk7CisgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEoc2hhcmVkQnVmZmVyLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBmYWlsaW5nVVJMKTsK
KyAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5sb2FkKHJlcXVlc3QsIHN1
YnN0aXR1dGVEYXRhLCBmYWxzZSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6bG9hZEhUTUxTdHJpbmco
Y29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcpCiB7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaHRtbFN0cmluZy5jaGFyYWN0ZXJz
KCkpLCBodG1sU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgU3RyaW5nIE1J
TUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLSAgICBTdHJpbmcgZW5jb2RpbmdOYW1lKCJ1dGYtMTYiKTsK
ICAgICBLVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkg
OiBLVVJMKEtVUkwoKSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgS1VSTCBmYWlsaW5nVVJMOwotCi0g
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFzZVVSTCk7Ci0gICAgU3Vic3RpdHV0ZURhdGEg
c3Vic3RpdHV0ZURhdGEoc2hhcmVkQnVmZmVyLnJlbGVhc2UoKSwgTUlNRVR5cGUsIGVuY29kaW5n
TmFtZSwgZmFpbGluZ1VSTCk7CisgICAgY29tbW9uTG9hZERhdGEoc2hhcmVkQnVmZmVyLCAidGV4
dC9odG1sIiwgInV0Zi0xNiIsIGJhc2VVUkwsIEtVUkwoKSk7Cit9CiAKLSAgICBtX21haW5GcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5sb2FkKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhLCBm
YWxzZSk7Cit2b2lkIFdlYlBhZ2U6OmxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNoYXJh
Y3RlcnMoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOworICAgIGNvbW1vbkxv
YWREYXRhKHNoYXJlZEJ1ZmZlciwgInRleHQvcGxhaW4iLCAidXRmLTE2IiwgYmxhbmtVUkwoKSwg
S1VSTCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdG9wTG9hZGluZygpCkBAIC03NjUsMTIgKzc3
MSwyMCBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6CiAgICAgICAg
IGNhc2UgV2ViUGFnZU1lc3NhZ2U6OkxvYWRIVE1MU3RyaW5nOiB7CiAgICAgICAgICAgICBTdHJp
bmcgaHRtbFN0cmluZzsKICAgICAgICAgICAgIFN0cmluZyBiYXNlVVJMOwotICAgICAgICAgICAg
aWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpJbihodG1sU3RyaW5nLCBiYXNlVVJMKSkp
CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChodG1sU3Ry
aW5nLCBiYXNlVVJMKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBsb2FkSFRNTFN0cmluZyhodG1sU3RyaW5nLCBiYXNlVVJMKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBjYXNlIFdlYlBhZ2VNZXNzYWdlOjpMb2Fk
UGxhaW5UZXh0U3RyaW5nOiB7CisgICAgICAgICAgICBTdHJpbmcgc3RyaW5nOworICAgICAgICAg
ICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoc3RyaW5nKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBsb2FkUGxhaW5UZXh0
U3RyaW5nKHN0cmluZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBXZWJQYWdlTWVzc2FnZTo6U3RvcExvYWRpbmc6CiAgICAgICAgICAgICBzdG9wTG9hZGlu
ZygpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkocmV2aXNpb24gNjc4NDYpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CisgICAgY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTE1MywxMSArMTU0LDE0IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcg
c291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAorICAgIHZvaWQgY29tbW9uTG9hZERhdGEoUGFz
c1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmFpbGluZ1VSTCk7CisKICAgICAvLyBBY3Rpb25zCiAgICAg
dm9pZCB0cnlDbG9zZSgpOwogICAgIHZvaWQgbG9hZFVSTChjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIGxvYWRVUkxSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgbG9hZEhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwpOworICAgIHZvaWQgbG9hZFBsYWluVGV4dFN0cmluZyhjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHJlbG9hZChib29sIHJlbG9hZEZyb21PcmlnaW4pOwogICAgIHZvaWQgZ29G
b3J3YXJkKHVpbnQ2NF90KTsKICAgICB2b2lkIGdvQmFjayh1aW50NjRfdCk7Cg==
</data>
<flag name="review"
          id="57530"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>