<?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>37222</bug_id>
          
          <creation_ts>2010-04-07 11:31:07 -0700</creation_ts>
          <short_desc>[WINCE] Port SharedBuffer</short_desc>
          <delta_ts>2010-05-11 09:38:38 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>0</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>joybro201</cc>
    
    <cc>paroga</cc>
    
    <cc>sfalken</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>209749</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-04-07 11:31:07 -0700</bug_when>
    <thetext>Implement SharedBuffer::createWithContentsOfFile with standard IO functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209752</commentid>
    <comment_count>1</comment_count>
      <attachid>52760</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-04-07 11:35:14 -0700</bug_when>
    <thetext>Created attachment 52760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216800</commentid>
    <comment_count>2</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-04-25 02:38:34 -0700</bug_when>
    <thetext>&gt; +    FILE* fileDescriptor = 0;
&gt; +    fileDescriptor = _wfopen(nullifiedPath.charactersWithNullTermination(), TEXT(&quot;rb&quot;));
&gt; +    if (!fileDescriptor) {
Isn&apos;t it possible to use CreateFileW and CloseHandle? They would be more native.

&gt; +}; // namespace WebCore
no semicolon please</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216949</commentid>
    <comment_count>3</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-04-26 02:31:15 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; +    FILE* fileDescriptor = 0;
&gt; &gt; +    fileDescriptor = _wfopen(nullifiedPath.charactersWithNullTermination(), TEXT(&quot;rb&quot;));
&gt; &gt; +    if (!fileDescriptor) {
&gt; Isn&apos;t it possible to use CreateFileW and CloseHandle? They would be more
&gt; native.
&gt; 

It is possible, but I tried to follow the convention used in SharedBufferWin.cpp

&gt; &gt; +}; // namespace WebCore
&gt; no semicolon please

Oops. I found the same mistake in SharedBufferWin.cpp. I will fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216950</commentid>
    <comment_count>4</comment_count>
      <attachid>54268</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-04-26 02:34:03 -0700</bug_when>
    <thetext>Created attachment 54268
Patch

Remove the semicolon after the namespace block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216951</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-04-26 02:44:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It is possible, but I tried to follow the convention used in
&gt; SharedBufferWin.cpp
I&apos;d like to see the WinCE port directly in the Win32 port (where possible). Maybe you can post a patch which only changes the Win32 version and remove the ugly goto in this step by using somthing like:

fopen();
do {

  ftell()
  if (error)
    break;

  fread()

} while (0);

fclose();
return;


I think that it is more WebKit Style than your FileDescriptorHolder class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220521</commentid>
    <comment_count>6</comment_count>
      <attachid>55002</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-05-04 01:39:08 -0700</bug_when>
    <thetext>Created attachment 55002
Alternative patch

This patch only modifies the exisiting SharedBufferWin.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220941</commentid>
    <comment_count>7</comment_count>
      <attachid>54268</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-05-04 19:17:37 -0700</bug_when>
    <thetext>Comment on attachment 54268
Patch

Cancel my review request in favor of Patrick&apos;s patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223084</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-09 14:34:01 -0700</bug_when>
    <thetext>Adam Roben is probably the right reviewer here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223287</commentid>
    <comment_count>9</comment_count>
      <attachid>55002</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-10 06:47:14 -0700</bug_when>
    <thetext>Comment on attachment 55002
Alternative patch

&gt; -    FILE* fileDescriptor = 0;
&gt; -    if (_wfopen_s(&amp;fileDescriptor, nullifiedPath.charactersWithNullTermination(), TEXT(&quot;rb&quot;)) || !fileDescriptor) {
&gt; -        LOG_ERROR(&quot;Failed to open file %s to create shared buffer, errno(%i)&quot;, filePath.ascii().data(), errno);
&gt; +    HANDLE fileHandle = CreateFileW(nullifiedPath.charactersWithNullTermination(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
&gt; +    if (fileHandle == INVALID_HANDLE_VALUE) {
&gt; +        LOG_ERROR(&quot;Failed to open file %s to create shared buffer, errno(%u)&quot;, filePath.ascii().data(), GetLastError());
&gt;          return 0;
&gt;      }

The &quot;errno&quot; in the log message isn&apos;t really accurate anymore. Maybe you could change it to &quot;GetLastError() = %u&quot;

&gt; +    do {
&gt; +        DWORD bytesRead;
&gt; +        DWORD bytesToRead;

No need to declare these here. You can just declare them where you first use them.

&gt; +        bytesToRead = GetFileSize(fileHandle, 0);
&gt; +        if (bytesToRead == 0xffffffff)
&gt; +            break;

I think it would be nicer to put 0xffffffff in a constant. Apparently on non-CE versions of Windows this is called INVALID_FILE_SIZE. So maybe a static const DWORD invalidFileSize constant would be best.

MSDN says that when 0xffffffff is returned you need to check that GetLastError() is not NO_ERROR before assuming that an error has occurred. Otherwise the file size might actually be 0xffffffff. (Of course, the rest of the code might not be able to handle that situation.)

It would be nice to use GetFileSizeEx on non-CE Windows. Maybe we should have a wrapper function that calls GetFileSize on CE and GetFileSizeEx on everything else?

&gt; +        result = SharedBuffer::create();
&gt; +        result-&gt;m_buffer.resize(bytesToRead);
&gt; +        if (result-&gt;m_buffer.size() != bytesToRead) {
&gt; +            result = 0;
&gt; +            break;
&gt; +        }

I don&apos;t think it&apos;s possible for Vector::resize to fail in this way.

&gt; +
&gt; +        result-&gt;m_size = result-&gt;m_buffer.size();
&gt; +
&gt; +        if (!ReadFile(fileHandle, result-&gt;m_buffer.data(), bytesToRead, &amp;bytesRead, 0) || bytesToRead != bytesRead)
&gt; +            LOG_ERROR(&quot;Failed to fully read contents of file %s - errno(%u)&quot;, filePath.ascii().data(), GetLastError());
&gt; +    } while (0);

It would be more efficient to do:

Vector&lt;char&gt; buffer(bytesToRead);
// Read into buffer.data();
return SharedBuffer::adoptVector(buffer);

do{}while(0) isn&apos;t super-common in WebCore. A more common way to accomplish this would be to add a helper function, like

static void getDataFromFile(HANDLE fileHandle, Vector&lt;char&gt;&amp; buffer)

These comments are mostly stylistic, so I&apos;ll r+ the patch. But I think it would be nice to clean it up a little more before landing it, so I won&apos;t cq+ it just yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223307</commentid>
    <comment_count>10</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-05-10 07:36:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; It would be nice to use GetFileSizeEx on non-CE Windows. Maybe we should have a wrapper function that calls GetFileSize on CE and GetFileSizeEx on everything else?
I don&apos;t see the additional value for calling GetFileSizeEx. ReadFile can only read 0xffffffff in one call. That&apos;s the maximum returned by GetFileSize already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223314</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-10 07:52:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; It would be nice to use GetFileSizeEx on non-CE Windows. Maybe we should have a wrapper function that calls GetFileSize on CE and GetFileSizeEx on everything else?
&gt; I don&apos;t see the additional value for calling GetFileSizeEx. ReadFile can only read 0xffffffff in one call. That&apos;s the maximum returned by GetFileSize already.

GetFileSizeEx is just a nicer API (returns a BOOL indicating success/failure instead of returning a DWORD with a special value that might indicate failure). But switching to it isn&apos;t critical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223317</commentid>
    <comment_count>12</comment_count>
      <attachid>55554</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-05-10 08:11:02 -0700</bug_when>
    <thetext>Created attachment 55554
Alternative patch part 2

Adressed Adams points.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223338</commentid>
    <comment_count>13</comment_count>
      <attachid>55554</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-10 08:56:22 -0700</bug_when>
    <thetext>Comment on attachment 55554
Alternative patch part 2

&gt; +    Vector&lt;char&gt; buffer;
&gt; +    DWORD bytesToRead = GetFileSize(fileHandle, 0);
&gt; +    DWORD lastError = GetLastError();
&gt;  
&gt; -    // Stat the file to get its size
&gt; -    struct _stat64 fileStat;
&gt; -    if (_fstat64(_fileno(fileDescriptor), &amp;fileStat))
&gt; -        goto exit;
&gt; +    if (bytesToRead != INVALID_FILE_SIZE || lastError == NO_ERROR) {
&gt; +        DWORD bytesRead;
&gt; +        if (!ReadFile(fileHandle, buffer.data(), bytesToRead, &amp;bytesRead, 0) || bytesToRead != bytesRead)

You&apos;re using buffer.data() here without setting buffer&apos;s size.

I&apos;d suggest structuring things like this:

RefPtr&lt;SharedBuffer&gt; result;
DWORD bytesToRead = GetFileSize(fileHandle, 0);

if (bytesToRead != INVALID_FILE_SIZE || lastError == NO_ERROR) {
    Vector&lt;char&gt; buffer(bytesToRead);
    if (!ReadFile(...) || bytesToRead != bytesRead)
        LOG_ERROR(...);
    else
        result = SharedBuffer::adoptVector(buffer);
} else
    LOG_ERROR(...);

CloseHandle(fileHandle);
return result.release();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223394</commentid>
    <comment_count>14</comment_count>
      <attachid>55569</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-05-10 10:50:55 -0700</bug_when>
    <thetext>Created attachment 55569
Alternative patch part 3

&gt; You&apos;re using buffer.data() here without setting buffer&apos;s size.
Sorry! I&apos;ve corrected that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223436</commentid>
    <comment_count>15</comment_count>
      <attachid>55569</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-10 12:05:11 -0700</bug_when>
    <thetext>Comment on attachment 55569
Alternative patch part 3

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223959</commentid>
    <comment_count>16</comment_count>
      <attachid>55569</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-11 09:38:31 -0700</bug_when>
    <thetext>Comment on attachment 55569
Alternative patch part 3

Clearing flags on attachment: 55569

Committed r59154: &lt;http://trac.webkit.org/changeset/59154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223960</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-11 09:38:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52760</attachid>
            <date>2010-04-07 11:35:14 -0700</date>
            <delta_ts>2010-04-26 02:34:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>SharedBuffer.patch</filename>
            <type>text/plain</type>
            <size>4074</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzIyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDQtMDcgIFlvdW5nIEhhbiBMZWUgIDxqb3licm9AY29tcGFu
eTEwMC5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW1dJTkNFXSBQb3J0IFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcyMjIKKworICAgICAgICBJbXBsZW1lbnQgU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUgd2l0aCBzdGFuZGFyZCBJTyBmdW5jdGlvbnMu
CisgICAgICAgIFVzZSBGaWxlRGVzY3JpcHRvckhvbGRlciB0byBtYWtlIHN1cmUgdGhlIGZpbGUg
ZGVzY3JpcHRvciBpcyBjbG9zZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9TaGFyZWRC
dWZmZXJXaW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZURlc2NyaXB0b3JI
b2xkZXI6OkZpbGVEZXNjcmlwdG9ySG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVEZXNj
cmlwdG9ySG9sZGVyOjp+RmlsZURlc2NyaXB0b3JIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorCiAyMDEwLTA0LTA3ICBF
bnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1NoYXJlZEJ1ZmZlcldp
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1NoYXJlZEJ1ZmZl
cldpbmNlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVk
QnVmZmVyV2luY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMDggQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCBDb21wYW55IDEwMCwgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRmlsZURlc2NyaXB0b3JIb2xkZXIgeworcHVibGljOgorICAgIEZpbGVEZXNj
cmlwdG9ySG9sZGVyKEZJTEUqIGZkKSA6IG1fZmQoZmQpIHt9CisgICAgfkZpbGVEZXNjcmlwdG9y
SG9sZGVyKCkgeyBmY2xvc2UobV9mZCk7IH0KK3ByaXZhdGU6CisgICAgRklMRSogbV9mZDsKK307
CisKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIGlmIChmaWxlUGF0aC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgU3RyaW5nIG51bGxpZmllZFBhdGgg
PSBmaWxlUGF0aDsKKyAgICBGSUxFKiBmaWxlRGVzY3JpcHRvciA9IDA7CisgICAgZmlsZURlc2Ny
aXB0b3IgPSBfd2ZvcGVuKG51bGxpZmllZFBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKSwgVEVYVCgicmIiKSk7CisgICAgaWYgKCFmaWxlRGVzY3JpcHRvcikgeworICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMgdG8gY3JlYXRlIHNoYXJlZCBidWZmZXIi
LCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICBGaWxlRGVzY3JpcHRvckhvbGRlciBob2xkRmQoZmlsZURlc2NyaXB0b3IpOworCisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVzdWx0OworCisgICAgLy8gR2V0IHRoZSBmaWxlIHNpemUKKyAg
ICBpZiAoZnNlZWsoZmlsZURlc2NyaXB0b3IsIC0xLCBTRUVLX0VORCkpCisgICAgICAgIHJldHVy
biAwOworICAgIERXT1JEIGZpbGVTaXplID0gZnRlbGwoZmlsZURlc2NyaXB0b3IpOworICAgIGlm
ICgweEZGRkZGRkZGID09IGZpbGVTaXplKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJlc3Vs
dCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgcmVzdWx0LT5tX2J1ZmZlci5yZXNpemUo
ZmlsZVNpemUpOworICAgIGlmIChyZXN1bHQtPm1fYnVmZmVyLnNpemUoKSAhPSBmaWxlU2l6ZSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXN1bHQtPm1fc2l6ZSA9IHJlc3VsdC0+bV9idWZm
ZXIuc2l6ZSgpOworCisgICAgaWYgKGZzZWVrKGZpbGVEZXNjcmlwdG9yLCAwLCBTRUVLX1NFVCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGZyZWFkKHJlc3VsdC0+bV9idWZmZXIuZGF0
YSgpLCAxLCBmaWxlU2l6ZSwgZmlsZURlc2NyaXB0b3IpICE9IGZpbGVTaXplKQorICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMiLCBmaWxl
UGF0aC5hc2NpaSgpLmRhdGEoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30K
KworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54268</attachid>
            <date>2010-04-26 02:34:03 -0700</date>
            <delta_ts>2010-05-04 19:17:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>SharedBufferWince.patch</filename>
            <type>text/plain</type>
            <size>4072</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODI0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDQtMjYgIFlvdW5nIEhhbiBMZWUgIDxqb3licm9AY29tcGFu
eTEwMC5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW1dJTkNFXSBQb3J0IFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcyMjIKKworICAgICAgICBJbXBsZW1lbnQgU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUgd2l0aCBzdGFuZGFyZCBJTyBmdW5jdGlvbnMu
CisgICAgICAgIFVzZSBGaWxlRGVzY3JpcHRvckhvbGRlciB0byBtYWtlIHN1cmUgdGhlIGZpbGUg
ZGVzY3JpcHRvciBpcyBjbG9zZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9TaGFyZWRC
dWZmZXJXaW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZURlc2NyaXB0b3JI
b2xkZXI6OkZpbGVEZXNjcmlwdG9ySG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVEZXNj
cmlwdG9ySG9sZGVyOjp+RmlsZURlc2NyaXB0b3JIb2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorCiAyMDEwLTA0LTI1ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVkQnVmZmVyV2lu
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luY2UvU2hhcmVkQnVmZmVy
V2luY2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9TaGFyZWRC
dWZmZXJXaW5jZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIENvbXBhbnkgMTAwLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBGaWxlRGVzY3JpcHRvckhvbGRlciB7CitwdWJsaWM6CisgICAgRmlsZURlc2Ny
aXB0b3JIb2xkZXIoRklMRSogZmQpIDogbV9mZChmZCkge30KKyAgICB+RmlsZURlc2NyaXB0b3JI
b2xkZXIoKSB7IGZjbG9zZShtX2ZkKTsgfQorcHJpdmF0ZToKKyAgICBGSUxFKiBtX2ZkOworfTsK
KworUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgaWYgKGZpbGVQYXRoLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTdHJpbmcgbnVsbGlmaWVkUGF0aCA9
IGZpbGVQYXRoOworICAgIEZJTEUqIGZpbGVEZXNjcmlwdG9yID0gMDsKKyAgICBmaWxlRGVzY3Jp
cHRvciA9IF93Zm9wZW4obnVsbGlmaWVkUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLCBURVhUKCJyYiIpKTsKKyAgICBpZiAoIWZpbGVEZXNjcmlwdG9yKSB7CisgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0byBjcmVhdGUgc2hhcmVkIGJ1ZmZlciIs
IGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IEZpbGVEZXNjcmlwdG9ySG9sZGVyIGhvbGRGZChmaWxlRGVzY3JpcHRvcik7CisKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CisKKyAgICAvLyBHZXQgdGhlIGZpbGUgc2l6ZQorICAg
IGlmIChmc2VlayhmaWxlRGVzY3JpcHRvciwgLTEsIFNFRUtfRU5EKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgRFdPUkQgZmlsZVNpemUgPSBmdGVsbChmaWxlRGVzY3JpcHRvcik7CisgICAgaWYg
KDB4RkZGRkZGRkYgPT0gZmlsZVNpemUpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmVzdWx0
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICByZXN1bHQtPm1fYnVmZmVyLnJlc2l6ZShm
aWxlU2l6ZSk7CisgICAgaWYgKHJlc3VsdC0+bV9idWZmZXIuc2l6ZSgpICE9IGZpbGVTaXplKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJlc3VsdC0+bV9zaXplID0gcmVzdWx0LT5tX2J1ZmZl
ci5zaXplKCk7CisKKyAgICBpZiAoZnNlZWsoZmlsZURlc2NyaXB0b3IsIDAsIFNFRUtfU0VUKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZnJlYWQocmVzdWx0LT5tX2J1ZmZlci5kYXRh
KCksIDEsIGZpbGVTaXplLCBmaWxlRGVzY3JpcHRvcikgIT0gZmlsZVNpemUpCisgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyIsIGZpbGVQ
YXRoLmFzY2lpKCkuZGF0YSgpKTsKKworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55002</attachid>
            <date>2010-05-04 01:39:08 -0700</date>
            <delta_ts>2010-05-10 08:11:02 -0700</delta_ts>
            <desc>Alternative patch</desc>
            <filename>bug-37222.patch</filename>
            <type>text/plain</type>
            <size>3369</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODc0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDUtMDQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBh
cm9nYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUG9ydCBTaGFyZWRCdWZmZXIgdG8gV2luQ0UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzIyMgorCisgICAgICAgIFVzZSBvbmx5IGZ1bmN0aW9u
cyB3aGljaCBhcmUgYXZhaWxhYmxlIG9uIFdpbjMyIGFuZCBXaW5DRS4KKworICAgICAgICAqIHBs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorCiAyMDEwLTA1LTAzICBTdGV2ZW4g
TGFpICA8c3RldmVuX2xhaUBhc2lhLmFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBC
cmFkeSBFaWRzb24uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5j
cHAJKHJldmlzaW9uIDU4NzQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDM0ICszOCwzNyBAQCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5n
IG51bGxpZmllZFBhdGggPSBmaWxlUGF0aDsKLSAgICBGSUxFKiBmaWxlRGVzY3JpcHRvciA9IDA7
Ci0gICAgaWYgKF93Zm9wZW5fcygmZmlsZURlc2NyaXB0b3IsIG51bGxpZmllZFBhdGguY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgVEVYVCgicmIiKSkgfHwgIWZpbGVEZXNjcmlwdG9y
KSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0byBjcmVhdGUg
c2hhcmVkIGJ1ZmZlciwgZXJybm8oJWkpIiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIGVycm5v
KTsKKyAgICBIQU5ETEUgZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKG51bGxpZmllZFBhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgR0VORVJJQ19SRUFELCBGSUxFX1NIQVJFX1JF
QUQsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CisgICAgaWYg
KGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGNyZWF0ZSBzaGFyZWQgYnVmZmVyLCBlcnJubygl
dSkiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAKLSAg
ICAvLyBTdGF0IHRoZSBmaWxlIHRvIGdldCBpdHMgc2l6ZQotICAgIHN0cnVjdCBfc3RhdDY0IGZp
bGVTdGF0OwotICAgIGlmIChfZnN0YXQ2NChfZmlsZW5vKGZpbGVEZXNjcmlwdG9yKSwgJmZpbGVT
dGF0KSkKLSAgICAgICAgZ290byBleGl0OwotCi0gICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICByZXN1bHQtPm1fYnVmZmVyLnJlc2l6ZShmaWxlU3RhdC5zdF9zaXplKTsK
LSAgICBpZiAocmVzdWx0LT5tX2J1ZmZlci5zaXplKCkgIT0gZmlsZVN0YXQuc3Rfc2l6ZSkgewot
ICAgICAgICByZXN1bHQgPSAwOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotCi0gICAgcmVz
dWx0LT5tX3NpemUgPSByZXN1bHQtPm1fYnVmZmVyLnNpemUoKTsKLQotICAgIGlmIChmcmVhZChy
ZXN1bHQtPm1fYnVmZmVyLmRhdGEoKSwgMSwgZmlsZVN0YXQuc3Rfc2l6ZSwgZmlsZURlc2NyaXB0
b3IpICE9IGZpbGVTdGF0LnN0X3NpemUpCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1
bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyAtIGVycm5vKCVpKSIsIGZpbGVQYXRoLmFzY2lp
KCkuZGF0YSgpLCBlcnJubyk7CisgICAgZG8geworICAgICAgICBEV09SRCBieXRlc1JlYWQ7Cisg
ICAgICAgIERXT1JEIGJ5dGVzVG9SZWFkOworCisgICAgICAgIGJ5dGVzVG9SZWFkID0gR2V0Rmls
ZVNpemUoZmlsZUhhbmRsZSwgMCk7CisgICAgICAgIGlmIChieXRlc1RvUmVhZCA9PSAweGZmZmZm
ZmZmKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICAgICAgcmVzdWx0LT5tX2J1ZmZlci5yZXNpemUoYnl0ZXNUb1JlYWQp
OworICAgICAgICBpZiAocmVzdWx0LT5tX2J1ZmZlci5zaXplKCkgIT0gYnl0ZXNUb1JlYWQpIHsK
KyAgICAgICAgICAgIHJlc3VsdCA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIHJlc3VsdC0+bV9zaXplID0gcmVzdWx0LT5tX2J1ZmZlci5zaXplKCk7CisKKyAg
ICAgICAgaWYgKCFSZWFkRmlsZShmaWxlSGFuZGxlLCByZXN1bHQtPm1fYnVmZmVyLmRhdGEoKSwg
Ynl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApIHx8IGJ5dGVzVG9SZWFkICE9IGJ5dGVzUmVhZCkK
KyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2Yg
ZmlsZSAlcyAtIGVycm5vKCV1KSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJy
b3IoKSk7CisgICAgfSB3aGlsZSAoMCk7CiAKLWV4aXQ6Ci0gICAgZmNsb3NlKGZpbGVEZXNjcmlw
dG9yKTsKKyAgICBDbG9zZUhhbmRsZShmaWxlSGFuZGxlKTsKICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKIH0KIAotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>
<flag name="review"
          id="39090"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55554</attachid>
            <date>2010-05-10 08:11:02 -0700</date>
            <delta_ts>2010-05-10 10:50:55 -0700</delta_ts>
            <desc>Alternative patch part 2</desc>
            <filename>bug-37222.patch</filename>
            <type>text/plain</type>
            <size>3577</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODc0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDUtMDQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBh
cm9nYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUG9ydCBTaGFyZWRCdWZmZXIgdG8gV2luQ0UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzIyMgorCisgICAgICAgIFVzZSBvbmx5IGZ1bmN0aW9u
cyB3aGljaCBhcmUgYXZhaWxhYmxlIG9uIFdpbjMyIGFuZCBXaW5DRS4KKworICAgICAgICAqIHBs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorCiAyMDEwLTA1LTAzICBTdGV2ZW4g
TGFpICA8c3RldmVuX2xhaUBhc2lhLmFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBC
cmFkeSBFaWRzb24uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5j
cHAJKHJldmlzaW9uIDU4NzQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzMwLDExIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKKy8vIElOVkFMSURfRklMRV9TSVpFIGlz
IG5vdCBkZWZpbmVkIG9uIFdpbkNFLgorI2lmbmRlZiBJTlZBTElEX0ZJTEVfU0laRQorI2RlZmlu
ZSBJTlZBTElEX0ZJTEVfU0laRSAweGZmZmZmZmZmCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKQEAgLTM3LDM0ICs0MywyNSBA
QAogICAgICAgICByZXR1cm4gMDsKIAogICAgIFN0cmluZyBudWxsaWZpZWRQYXRoID0gZmlsZVBh
dGg7Ci0gICAgRklMRSogZmlsZURlc2NyaXB0b3IgPSAwOwotICAgIGlmIChfd2ZvcGVuX3MoJmZp
bGVEZXNjcmlwdG9yLCBudWxsaWZpZWRQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCksIFRFWFQoInJiIikpIHx8ICFmaWxlRGVzY3JpcHRvcikgewotICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBvcGVuIGZpbGUgJXMgdG8gY3JlYXRlIHNoYXJlZCBidWZmZXIsIGVycm5vKCVp
KSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBlcnJubyk7CisgICAgSEFORExFIGZpbGVIYW5k
bGUgPSBDcmVhdGVGaWxlVyhudWxsaWZpZWRQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCBG
SUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURf
SEFORExFX1ZBTFVFKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAl
cyB0byBjcmVhdGUgc2hhcmVkIGJ1ZmZlciwgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRo
LmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBWZWN0b3I8Y2hhcj4g
YnVmZmVyOworICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwg
MCk7CisgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKLSAgICAvLyBTdGF0
IHRoZSBmaWxlIHRvIGdldCBpdHMgc2l6ZQotICAgIHN0cnVjdCBfc3RhdDY0IGZpbGVTdGF0Owot
ICAgIGlmIChfZnN0YXQ2NChfZmlsZW5vKGZpbGVEZXNjcmlwdG9yKSwgJmZpbGVTdGF0KSkKLSAg
ICAgICAgZ290byBleGl0OworICAgIGlmIChieXRlc1RvUmVhZCAhPSBJTlZBTElEX0ZJTEVfU0la
RSB8fCBsYXN0RXJyb3IgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwor
ICAgICAgICBpZiAoIVJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9S
ZWFkLCAmYnl0ZXNSZWFkLCAwKSB8fCBieXRlc1RvUmVhZCAhPSBieXRlc1JlYWQpCisgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMg
LSBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RF
cnJvcigpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGZp
bGVzaXplIG9mIGZpbGUgJXMgLSBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWko
KS5kYXRhKCksIGxhc3RFcnJvcik7CiAKLSAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwotICAgIHJlc3VsdC0+bV9idWZmZXIucmVzaXplKGZpbGVTdGF0LnN0X3NpemUpOwotICAg
IGlmIChyZXN1bHQtPm1fYnVmZmVyLnNpemUoKSAhPSBmaWxlU3RhdC5zdF9zaXplKSB7Ci0gICAg
ICAgIHJlc3VsdCA9IDA7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0KLSAgICByZXN1bHQt
Pm1fc2l6ZSA9IHJlc3VsdC0+bV9idWZmZXIuc2l6ZSgpOwotCi0gICAgaWYgKGZyZWFkKHJlc3Vs
dC0+bV9idWZmZXIuZGF0YSgpLCAxLCBmaWxlU3RhdC5zdF9zaXplLCBmaWxlRGVzY3JpcHRvcikg
IT0gZmlsZVN0YXQuc3Rfc2l6ZSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkg
cmVhZCBjb250ZW50cyBvZiBmaWxlICVzIC0gZXJybm8oJWkpIiwgZmlsZVBhdGguYXNjaWkoKS5k
YXRhKCksIGVycm5vKTsKLQotZXhpdDoKLSAgICBmY2xvc2UoZmlsZURlc2NyaXB0b3IpOwotICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIENsb3NlSGFuZGxlKGZpbGVIYW5kbGUpOwor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKGJ1ZmZlcik7CiB9CiAKLX07IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="39769"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55569</attachid>
            <date>2010-05-10 10:50:55 -0700</date>
            <delta_ts>2010-05-11 09:38:31 -0700</delta_ts>
            <desc>Alternative patch part 3</desc>
            <filename>bug-37222.patch</filename>
            <type>text/plain</type>
            <size>3615</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODc0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDUtMDQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBh
cm9nYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUG9ydCBTaGFyZWRCdWZmZXIgdG8gV2luQ0UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzIyMgorCisgICAgICAgIFVzZSBvbmx5IGZ1bmN0aW9u
cyB3aGljaCBhcmUgYXZhaWxhYmxlIG9uIFdpbjMyIGFuZCBXaW5DRS4KKworICAgICAgICAqIHBs
YXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorCiAyMDEwLTA1LTAzICBTdGV2ZW4g
TGFpICA8c3RldmVuX2xhaUBhc2lhLmFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBC
cmFkeSBFaWRzb24uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5j
cHAJKHJldmlzaW9uIDU4NzQyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzMwLDExIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKKy8vIElOVkFMSURfRklMRV9TSVpFIGlz
IG5vdCBkZWZpbmVkIG9uIFdpbkNFLgorI2lmbmRlZiBJTlZBTElEX0ZJTEVfU0laRQorI2RlZmlu
ZSBJTlZBTElEX0ZJTEVfU0laRSAweGZmZmZmZmZmCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKQEAgLTM3LDM0ICs0MywyOCBA
QAogICAgICAgICByZXR1cm4gMDsKIAogICAgIFN0cmluZyBudWxsaWZpZWRQYXRoID0gZmlsZVBh
dGg7Ci0gICAgRklMRSogZmlsZURlc2NyaXB0b3IgPSAwOwotICAgIGlmIChfd2ZvcGVuX3MoJmZp
bGVEZXNjcmlwdG9yLCBudWxsaWZpZWRQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCksIFRFWFQoInJiIikpIHx8ICFmaWxlRGVzY3JpcHRvcikgewotICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBvcGVuIGZpbGUgJXMgdG8gY3JlYXRlIHNoYXJlZCBidWZmZXIsIGVycm5vKCVp
KSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBlcnJubyk7CisgICAgSEFORExFIGZpbGVIYW5k
bGUgPSBDcmVhdGVGaWxlVyhudWxsaWZpZWRQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCBG
SUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURf
SEFORExFX1ZBTFVFKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAl
cyB0byBjcmVhdGUgc2hhcmVkIGJ1ZmZlciwgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRo
LmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBEV09SRCBieXRlc1Rv
UmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOworICAgIERXT1JEIGxhc3RFcnJvciA9
IEdldExhc3RFcnJvcigpOwogCi0gICAgLy8gU3RhdCB0aGUgZmlsZSB0byBnZXQgaXRzIHNpemUK
LSAgICBzdHJ1Y3QgX3N0YXQ2NCBmaWxlU3RhdDsKLSAgICBpZiAoX2ZzdGF0NjQoX2ZpbGVubyhm
aWxlRGVzY3JpcHRvciksICZmaWxlU3RhdCkpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAo
Ynl0ZXNUb1JlYWQgIT0gSU5WQUxJRF9GSUxFX1NJWkUgfHwgbGFzdEVycm9yID09IE5PX0VSUk9S
KSB7CisgICAgICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOworICAgICAgICBE
V09SRCBieXRlc1JlYWQ7CisgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0
ZXNSZWFkKQorICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcihi
dWZmZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBm
dWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxl
UGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOworICAgIH0gZWxzZQorICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBnZXQgZmlsZXNpemUgb2YgZmlsZSAlcywgR2V0TGFzdEVy
cm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBsYXN0RXJyb3IpOwogCi0gICAg
cmVzdWx0ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICByZXN1bHQtPm1fYnVmZmVyLnJl
c2l6ZShmaWxlU3RhdC5zdF9zaXplKTsKLSAgICBpZiAocmVzdWx0LT5tX2J1ZmZlci5zaXplKCkg
IT0gZmlsZVN0YXQuc3Rfc2l6ZSkgewotICAgICAgICByZXN1bHQgPSAwOwotICAgICAgICBnb3Rv
IGV4aXQ7Ci0gICAgfQotCi0gICAgcmVzdWx0LT5tX3NpemUgPSByZXN1bHQtPm1fYnVmZmVyLnNp
emUoKTsKLQotICAgIGlmIChmcmVhZChyZXN1bHQtPm1fYnVmZmVyLmRhdGEoKSwgMSwgZmlsZVN0
YXQuc3Rfc2l6ZSwgZmlsZURlc2NyaXB0b3IpICE9IGZpbGVTdGF0LnN0X3NpemUpCi0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyAtIGVy
cm5vKCVpKSIsIGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBlcnJubyk7Ci0KLWV4aXQ6Ci0gICAg
ZmNsb3NlKGZpbGVEZXNjcmlwdG9yKTsKKyAgICBDbG9zZUhhbmRsZShmaWxlSGFuZGxlKTsKICAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>