<?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>36938</bug_id>
          
          <creation_ts>2010-04-01 00:22:46 -0700</creation_ts>
          <short_desc>Add basic FileSystem operations for FileReader/FileWriter support for POSIX (incl. Mac)</short_desc>
          <delta_ts>2010-04-06 18:29:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          <blocked>32624</blocked>
    
    <blocked>36567</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dimich</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>jianli</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>207015</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-01 00:22:46 -0700</bug_when>
    <thetext>WebCore/platform/FileSystem.h has some platform-dependent filesystem operations, but there are missing operations (like seek, truncate and read) or unimplemented ones.   Add basic implementations for FileAPI&apos;s FileReader/FileWriter support (bug 32624, bug 36567).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207020</commentid>
    <comment_count>1</comment_count>
      <attachid>52269</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-01 00:30:26 -0700</bug_when>
    <thetext>Created attachment 52269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207037</commentid>
    <comment_count>2</comment_count>
      <attachid>52269</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 01:00:54 -0700</bug_when>
    <thetext>Comment on attachment 52269
Patch

&gt; diff --git a/WebCore/platform/FileSystem.h b/WebCore/platform/FileSystem.h
&gt; index 80023d4..3b61eb9 100644
&gt; --- a/WebCore/platform/FileSystem.h
&gt; +++ b/WebCore/platform/FileSystem.h
&gt; +enum FileOpenMode {
&gt; +    OPEN_FOR_READ = 0,
&gt; +    OPEN_FOR_WRITE
&gt; +};
&gt; +
&gt; +enum FileSeekOrigin {
&gt; +    SEEK_FROM_BEGINNING = 0,
&gt; +    SEEK_FROM_CURRENT,
&gt; +    SEEK_FROM_END
&gt; +};
&gt; +

http://webkit.org/coding/coding-style.html
10. Enum members should user InterCaps with an initial capital letter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207047</commentid>
    <comment_count>3</comment_count>
      <attachid>52274</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-01 01:15:02 -0700</bug_when>
    <thetext>Created attachment 52274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207049</commentid>
    <comment_count>4</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-01 01:16:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; http://webkit.org/coding/coding-style.html
&gt; 10. Enum members should user InterCaps with an initial capital letter.

Oh... thanks for pointing it out!  Updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207282</commentid>
    <comment_count>5</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-01 11:44:02 -0700</bug_when>
    <thetext>A minimal patch.  (We&apos;ll add implementations for chromium later)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208115</commentid>
    <comment_count>6</comment_count>
      <attachid>52460</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-02 15:41:12 -0700</bug_when>
    <thetext>Created attachment 52460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208564</commentid>
    <comment_count>7</comment_count>
      <attachid>52460</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-05 10:46:52 -0700</bug_when>
    <thetext>Comment on attachment 52460
Patch

&gt; --- a/WebCore/platform/FileSystem.h
&gt; +++ b/WebCore/platform/FileSystem.h
&gt; @@ -141,8 +152,12 @@ inline bool isHandleValid(const PlatformFileHandle&amp; handle) { return handle != i
&gt;  
&gt;  // Prefix is what the filename should be prefixed with, not the full path.
&gt;  WTF::CString openTemporaryFile(const char* prefix, PlatformFileHandle&amp;);
&gt; +PlatformFileHandle openFile(const String&amp; path, FileOpenMode);
&gt;  void closeFile(PlatformFileHandle&amp;);
&gt; +long long seekFile(PlatformFileHandle, long long offset, FileSeekOrigin);
&gt; +bool truncateFile(PlatformFileHandle, long long offset);
&gt;  int writeToFile(PlatformFileHandle, const char* data, int length);
&gt; +int readFromFile(PlatformFileHandle, char* data, int length);
Better to add comment saying that return value less than 0 indicates an error.
&gt;  
&gt;  // Methods for dealing with loadable modules
&gt;  bool unloadModule(PlatformModule);
&gt; diff --git a/WebCore/platform/posix/FileSystemPOSIX.cpp b/WebCore/platform/posix/FileSystemPOSIX.cpp
&gt; index d6804fb..57a36b8 100644
&gt; --- a/WebCore/platform/posix/FileSystemPOSIX.cpp
&gt; +++ b/WebCore/platform/posix/FileSystemPOSIX.cpp
&gt; +void closeFile(PlatformFileHandle&amp; handle)
&gt; +{
&gt; +    close(handle);
Since handle parameter is passed by reference, you need to set it to invalidPlatformFileHandle if closing is successful, like the following:
    if (isHandleValid(handle)) {
        close(handle);
        handle = invalidPlatformFileHandle;
    }
&gt; +}
&gt; +
&gt; +long long seekFile(PlatformFileHandle handle, long long offset, FileSeekOrigin origin)
&gt; +{
&gt; +    int whence = SEEK_SET;
&gt; +    switch (origin) {
&gt; +    case SeekFromBeginning: whence = SEEK_SET; break;
Per WebKit coding style, each statement should get its own line.
&gt; +    case SeekFromCurrent: whence = SEEK_CUR; break;
ditto.
&gt; +    case SeekFromEnd: whence = SEEK_END; break;
ditto.
&gt; +    default: ASSERT_NOT_REACHED();
ditto.
&gt; +    }
&gt; +    return static_cast&lt;long long&gt;(lseek(handle, offset, whence));
&gt; +}
&gt; +
&gt; +bool truncateFile(PlatformFileHandle handle, long long offset)
&gt; +{
&gt; +    if (ftruncate(handle, offset) &lt; 0)
&gt; +        return false;
&gt; +    return true;
Simpler to say:
       return ftruncate(handle, offset) == 0;
&gt; +}
&gt; +
&gt; +int writeToFile(PlatformFileHandle handle, const char* data, int length)
&gt; +{
&gt; +    int totalBytesWritten = 0;
&gt; +    while (totalBytesWritten &lt; length) {
&gt; +        int bytesWritten = HANDLE_EINTR(write(handle, data + totalBytesWritten, length - totalBytesWritten));
Using HANDLE_EINTR might not be necessary and it causes the complexity to understand the code.
How about something like the following:
           int bytesWritten = write(handle, data + totalBytesWritten, static_cast&lt;size_t&gt;(length - totalBytesWritten));
           if (bytesWritten &lt; 0 &amp;&amp; errno != EINTR)
               return -1;
In addition, better to do static_cast to size_t from int.
&gt; +        if (bytesWritten &lt; 0)
&gt; +            return -1;
&gt; +        totalBytesWritten += bytesWritten;
&gt; +    }
&gt; +
&gt; +    return totalBytesWritten;
&gt; +}
&gt; +
&gt; +int readFromFile(PlatformFileHandle handle, char* data, int length)
&gt; +{
&gt; +    int totalBytesRead = 0;
&gt; +    while (totalBytesRead &lt; length) {
&gt; +        int bytesRead = HANDLE_EINTR(read(handle, data + totalBytesRead, length - totalBytesRead));
ditto.
&gt; +        if (bytesRead &lt;= 0)
&gt; +            break;
&gt; +        totalBytesRead += bytesRead;
&gt; +    }
&gt; +
&gt; +    return totalBytesRead;
&gt; +}
&gt; +
&gt;  bool deleteEmptyDirectory(const String&amp; path)
&gt;  {
&gt;      CString fsRep = fileSystemRepresentation(path);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209243</commentid>
    <comment_count>8</comment_count>
      <attachid>52666</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-06 14:25:09 -0700</bug_when>
    <thetext>Created attachment 52666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209266</commentid>
    <comment_count>9</comment_count>
      <attachid>52666</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-06 14:55:11 -0700</bug_when>
    <thetext>Comment on attachment 52666
Patch

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index fe8d9a4..dfe25d7 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,22 @@
&gt; +2010-04-06  Kinuko Yasuda  &lt;kinuko@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add basic FileSystem operations for FileReader/FileWriter support
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=36938
&gt; +
&gt; +        No new tests; tests will be added after we implement upper layers.
&gt; +
&gt; +        * platform/FileSystem.h:
&gt; +        (WebCore::):
&gt; +        * platform/posix/FileSystemPOSIX.cpp:
&gt; +        (WebCore::openFile):
&gt; +        (WebCore::closeFile):
&gt; +        (WebCore::seekFile):
&gt; +        (WebCore::truncateFile):
&gt; +        (WebCore::writeToFile):
&gt; +        (WebCore::readFromFile):
&gt; +
&gt;  2010-04-02  Laszlo Gombos  &lt;laszlo.1.gombos@nokia.com&gt;
&gt;  
&gt;          Unreviewed build fix when building --no-svg.
&gt; diff --git a/WebCore/platform/FileSystem.h b/WebCore/platform/FileSystem.h
&gt; index 80023d4..663458f 100644
&gt; --- a/WebCore/platform/FileSystem.h
&gt; +++ b/WebCore/platform/FileSystem.h
&gt; @@ -26,7 +26,7 @@
&gt;   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
&gt;   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt;   */
&gt; - 
&gt; +
&gt;  #ifndef FileSystem_h
&gt;  #define FileSystem_h
&gt;  
&gt; @@ -122,6 +122,17 @@ typedef int PlatformFileHandle;
&gt;  const PlatformFileHandle invalidPlatformFileHandle = -1;
&gt;  #endif
&gt;  
&gt; +enum FileOpenMode {
&gt; +    OpenForRead = 0,
&gt; +    OpenForWrite
&gt; +};
&gt; +
&gt; +enum FileSeekOrigin {
&gt; +    SeekFromBeginning = 0,
&gt; +    SeekFromCurrent,
&gt; +    SeekFromEnd
&gt; +};
&gt; +
&gt;  bool fileExists(const String&amp;);
&gt;  bool deleteFile(const String&amp;);
&gt;  bool deleteEmptyDirectory(const String&amp;);
&gt; @@ -141,8 +152,15 @@ inline bool isHandleValid(const PlatformFileHandle&amp; handle) { return handle != i
&gt;  
&gt;  // Prefix is what the filename should be prefixed with, not the full path.
&gt;  WTF::CString openTemporaryFile(const char* prefix, PlatformFileHandle&amp;);
&gt; +PlatformFileHandle openFile(const String&amp; path, FileOpenMode);
&gt;  void closeFile(PlatformFileHandle&amp;);
&gt; +// Returns seeked offset if successful, -1 otherwise.
&gt; +long long seekFile(PlatformFileHandle, long long offset, FileSeekOrigin);
&gt; +bool truncateFile(PlatformFileHandle, long long offset);
&gt; +// Returns number of bytes actually read if successful, -1 otherwise.
&gt;  int writeToFile(PlatformFileHandle, const char* data, int length);
&gt; +// Returns number of bytes actually written if successful, -1 otherwise.
&gt; +int readFromFile(PlatformFileHandle, char* data, int length);
&gt;  
&gt;  // Methods for dealing with loadable modules
&gt;  bool unloadModule(PlatformModule);
&gt; diff --git a/WebCore/platform/posix/FileSystemPOSIX.cpp b/WebCore/platform/posix/FileSystemPOSIX.cpp
&gt; index d6804fb..5427948 100644
&gt; --- a/WebCore/platform/posix/FileSystemPOSIX.cpp
&gt; +++ b/WebCore/platform/posix/FileSystemPOSIX.cpp
&gt; @@ -30,11 +30,11 @@
&gt;  #include &quot;FileSystem.h&quot;
&gt;  
&gt;  #include &quot;PlatformString.h&quot;
&gt; -#include &lt;wtf/text/CString.h&gt;
&gt; -
&gt; -#include &lt;sys/stat.h&gt;
&gt; +#include &lt;errno.h&gt;
&gt;  #include &lt;libgen.h&gt;
&gt; +#include &lt;sys/stat.h&gt;
&gt;  #include &lt;unistd.h&gt;
&gt; +#include &lt;wtf/text/CString.h&gt;
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; @@ -65,6 +65,77 @@ bool deleteFile(const String&amp; path)
&gt;      return !unlink(fsRep.data());
&gt;  }
&gt;  
&gt; +PlatformFileHandle openFile(const String&amp; path, FileOpenMode mode)
&gt; +{
&gt; +    int platformFlag = 0;
&gt; +    if (mode == OpenForRead)
&gt; +        platformFlag |= O_RDONLY;
&gt; +    else if (mode == OpenForWrite)
&gt; +        platformFlag |= (O_WRONLY | O_CREAT | O_TRUNC);
&gt; +    return open(path.utf8().data(), platformFlag, 0666);
&gt; +}
&gt; +
&gt; +void closeFile(PlatformFileHandle&amp; handle)
&gt; +{
&gt; +    if (isHandleValid(handle)) {
&gt; +        close(handle);
&gt; +        handle = invalidPlatformFileHandle;
&gt; +    }
&gt; +}
&gt; +
&gt; +long long seekFile(PlatformFileHandle handle, long long offset, FileSeekOrigin origin)
&gt; +{
&gt; +    int whence = SEEK_SET;
&gt; +    switch (origin) {
&gt; +    case SeekFromBeginning:
&gt; +        whence = SEEK_SET;
&gt; +        break;
&gt; +    case SeekFromCurrent:
&gt; +        whence = SEEK_CUR;
&gt; +        break;
&gt; +    case SeekFromEnd:
&gt; +        whence = SEEK_END;
&gt; +        break;
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +    }
&gt; +    return static_cast&lt;long long&gt;(lseek(handle, offset, whence));
&gt; +}
&gt; +
&gt; +bool truncateFile(PlatformFileHandle handle, long long offset)
Why do we need to introduce truncateFile? I am not seeing any reference in your FileWriter patch.
&gt; +{
&gt; +    // A return value 0 indicates the call succeeds.
The comment is a little bit confusing because it might also mean the return value of truncateFile. How about something like: 
       // ftruncate returns 0 to indicates the success.
&gt; +    return !ftruncate(handle, offset);
&gt; +}
&gt; +
&gt; +int writeToFile(PlatformFileHandle handle, const char* data, int length)
&gt; +{
&gt; +    int totalBytesWritten = 0;
&gt; +    while (totalBytesWritten &lt; length) {
&gt; +        int bytesWritten = write(handle, data + totalBytesWritten, static_cast&lt;size_t&gt;(length - totalBytesWritten));
&gt; +        if (bytesWritten &lt; 0 &amp;&amp; errno != EINTR)
&gt; +            return -1;
&gt; +        if (errno != EINTR)
It would be safe to say:
           if (bytesWritten &gt; 0)
&gt; +            totalBytesWritten += bytesWritten;
&gt; +    }
&gt; +
&gt; +    return totalBytesWritten;
&gt; +}
&gt; +
&gt; +int readFromFile(PlatformFileHandle handle, char* data, int length)
&gt; +{
&gt; +    int totalBytesRead = 0;
&gt; +    while (totalBytesRead &lt; length) {
&gt; +        int bytesRead = read(handle, data + totalBytesRead, static_cast&lt;size_t&gt;(length - totalBytesRead));
&gt; +        if (bytesRead &lt;= 0 &amp;&amp; errno != EINTR)
&gt; +            break;
&gt; +        if (errno != EINTR)
ditto.
&gt; +            totalBytesRead += bytesRead;
&gt; +    }
&gt; +
&gt; +    return totalBytesRead;
&gt; +}
&gt; +
&gt;  bool deleteEmptyDirectory(const String&amp; path)
&gt;  {
&gt;      CString fsRep = fileSystemRepresentation(path);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209273</commentid>
    <comment_count>10</comment_count>
      <attachid>52673</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-06 15:03:51 -0700</bug_when>
    <thetext>Created attachment 52673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209276</commentid>
    <comment_count>11</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-06 15:07:02 -0700</bug_when>
    <thetext>Thanks for reviewing very quickly.

(In reply to comment #9)
&gt; (From update of attachment 52666 [details])
&gt; &gt; +bool truncateFile(PlatformFileHandle handle, long long offset)
&gt; Why do we need to introduce truncateFile? I am not seeing any reference in your
&gt; FileWriter patch.

I haven&apos;t implemented in my private patch yet but FileWriter spec has
truncate() API and I anticipate I will need that.

&gt; &gt; +int writeToFile(PlatformFileHandle handle, const char* data, int length)
&gt; &gt; +{
&gt; &gt; +    int totalBytesWritten = 0;
&gt; &gt; +    while (totalBytesWritten &lt; length) {
&gt; &gt; +        int bytesWritten = write(handle, data + totalBytesWritten, static_cast&lt;size_t&gt;(length - totalBytesWritten));
&gt; &gt; +        if (bytesWritten &lt; 0 &amp;&amp; errno != EINTR)
&gt; &gt; +            return -1;
&gt; &gt; +        if (errno != EINTR)
&gt; It would be safe to say:
&gt;            if (bytesWritten &gt; 0)
&gt; &gt; +            totalBytesWritten += bytesWritten;

Good suggestion, fixed it (here and in readFrmoFile).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209287</commentid>
    <comment_count>12</comment_count>
      <attachid>52673</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-06 15:36:37 -0700</bug_when>
    <thetext>Comment on attachment 52673
Patch

Noticed another problem in read file logic plus a couple minor comment suggestions. Almost there.

&gt; +// Returns seeked offset if successful, -1 otherwise.
Probably need to rephrase a little bit, like:
    // Returns the resulting offset from the beginning of the file if successful, -1 otherwise.
&gt; +long long seekFile(PlatformFileHandle, long long offset, FileSeekOrigin);

&gt; +bool truncateFile(PlatformFileHandle handle, long long offset)
&gt; +{
&gt; +    // ftruncate return 0 to indicate the success.
r/return/returns
&gt; +    return !ftruncate(handle, offset);
&gt; +}
&gt; +

&gt; +int readFromFile(PlatformFileHandle handle, char* data, int length)
&gt; +{
&gt; +    int totalBytesRead = 0;
&gt; +    while (totalBytesRead &lt; length) {
&gt; +        int bytesRead = read(handle, data + totalBytesRead, static_cast&lt;size_t&gt;(length - totalBytesRead));
&gt; +        if (bytesRead &lt;= 0 &amp;&amp; errno != EINTR)
&gt; +            break;
If we encounter non-EINTR error and break out of the loop, we will return totalBytesRead that is not -1.
In addition, we should not continue the reading if bytesRead &gt;= 0.
I think the block can be reorganized like the following:
           if (bytesRead &gt;= 0) {
               totalBytesRead += bytesRead;
               break;
           }
           if (errno != EINTR)
               return -1;

writeToFile could also do the similar thing for better readerability.

&gt; +        if (bytesRead &gt; 0)
&gt; +            totalBytesRead += bytesRead;
&gt; +    }
&gt; +
&gt; +    return totalBytesRead;
&gt; +}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209349</commentid>
    <comment_count>13</comment_count>
      <attachid>52687</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-06 17:30:12 -0700</bug_when>
    <thetext>Created attachment 52687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209352</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-06 17:34:41 -0700</bug_when>
    <thetext>Attachment 52687 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
s
  any such category.  The filter input &quot;-whitespace,+whitespace/braces&quot; fails
  the category &quot;whitespace/tab&quot; and passes &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style errors
                        to report.  Specify a filter using a comma-delimited
                        list of boolean filter rules, for example &quot;--filter
                        -whitespace,+whitespace/braces&quot;.  To display all
                        categories and which are enabled by default, pass no
                        value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-commit=COMMIT, --git-diff=COMMIT, --git-since=COMMIT
                        check all changes after the given git commit.
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.
                        Can be an integer 1-5, with 1 displaying all errors.
                        Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot;
                        (for Visual Studio).  Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209353</commentid>
    <comment_count>15</comment_count>
      <attachid>52687</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-06 17:42:53 -0700</bug_when>
    <thetext>Comment on attachment 52687
Patch

You can land it given that the ChangeLog and bug title need to be updated to reflect that the FileSystem implementations are just for POSIX.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209358</commentid>
    <comment_count>16</comment_count>
      <attachid>52688</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-06 17:58:23 -0700</bug_when>
    <thetext>Created attachment 52688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209361</commentid>
    <comment_count>17</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-04-06 17:59:31 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 52687 [details])
&gt; You can land it given that the ChangeLog and bug title need to be updated to
&gt; reflect that the FileSystem implementations are just for POSIX.

Thanks, made one more update for ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209374</commentid>
    <comment_count>18</comment_count>
      <attachid>52688</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-04-06 18:14:06 -0700</bug_when>
    <thetext>Comment on attachment 52688
Patch

ChangeLog change looks good.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209382</commentid>
    <comment_count>19</comment_count>
      <attachid>52688</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-06 18:29:13 -0700</bug_when>
    <thetext>Comment on attachment 52688
Patch

Clearing flags on attachment: 52688

Committed r57182: &lt;http://trac.webkit.org/changeset/57182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209383</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-06 18:29:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52269</attachid>
            <date>2010-04-01 00:30:26 -0700</date>
            <delta_ts>2010-04-01 01:14:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36938-20100401003024.patch</filename>
            <type>text/plain</type>
            <size>4910</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjNmMmJmMy4uOTA5NWJiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0wMSAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIGZpbGUgb3BlcmF0aW9ucyBpbiBGaWxlU3lzdGVt
IGZvciBGaWxlQVBJIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjg5NgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgdGVzdHMgd2lsbCBi
ZSBhZGRlZCB3aGVuIHVwcGVyIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVu
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjp0
cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZEZyb21GaWxlKToKKwogMjAxMC0wMy0zMSAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bi5oOiBGaXggaW5jb25zaXN0ZW50IGxpbmUgZW5kaW5ncy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5k
ZXggODAwMjNkNC4uM2I2MWViOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTI2LDcgKzI2LDcg
QEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaWZuZGVmIEZp
bGVTeXN0ZW1faAogI2RlZmluZSBGaWxlU3lzdGVtX2gKIApAQCAtMTIyLDYgKzEyMiwxNyBAQCB0
eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUg
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwogI2VuZGlmCiAKK2VudW0gRmlsZU9wZW5N
b2RlIHsKKyAgICBPUEVOX0ZPUl9SRUFEID0gMCwKKyAgICBPUEVOX0ZPUl9XUklURQorfTsKKwor
ZW51bSBGaWxlU2Vla09yaWdpbiB7CisgICAgU0VFS19GUk9NX0JFR0lOTklORyA9IDAsCisgICAg
U0VFS19GUk9NX0NVUlJFTlQsCisgICAgU0VFS19GUk9NX0VORAorfTsKKwogYm9vbCBmaWxlRXhp
c3RzKGNvbnN0IFN0cmluZyYpOwogYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogYm9v
bCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTE0MSw4ICsxNTIsMTIg
QEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVu
YW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdURjo6Q1N0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBjaGFyKiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYpOworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlKTsKIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOworbG9u
ZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmls
ZVNlZWtPcmlnaW4pOworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0KTsKIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAvLyBNZXRob2RzIGZvciBkZWFsaW5n
IHdpdGggbG9hZGFibGUgbW9kdWxlcwogYm9vbCB1bmxvYWRNb2R1bGUoUGxhdGZvcm1Nb2R1bGUp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGQ2ODA0
ZmIuLmYzNzBlNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKQEAgLTMwLDExICszMCwxOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi0j
aW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGxpYmdl
bi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisjZGVmaW5lIEhBTkRMRV9FSU5UUih4KSAoeyBcCisg
ICAgdHlwZW9mKHgpIF9fZWludHJfcmVzdWx0X187IFwKKyAgICBkbyB7IFwKKyAgICAgICAgX19l
aW50cl9yZXN1bHRfXyA9IHg7IFwKKyAgICB9IHdoaWxlIChfX2VpbnRyX3Jlc3VsdF9fID09IC0x
ICYmIGVycm5vID09IEVJTlRSKTsgXAorICAgIF9fZWludHJfcmVzdWx0X187XAorfSkKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NSw2ICs3Myw2MSBAQCBib29sIGRlbGV0ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiAhdW5saW5rKGZzUmVwLmRhdGEoKSk7CiB9CiAK
K1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVu
TW9kZSBtb2RlKQoreworICAgIGludCBwbGF0Zm9ybUZsYWcgPSAwOworICAgIGlmIChtb2RlID09
IE9QRU5fRk9SX1JFQUQpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKKyAgICBl
bHNlIGlmIChtb2RlID09IE9QRU5fRk9SX1dSSVRFKQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0g
KE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMpOworICAgIHJldHVybiBvcGVuKHBhdGgudXRm
OCgpLmRhdGEoKSwgcGxhdGZvcm1GbGFnLCAwNjY2KTsKK30KKworbG9uZyBsb25nIHNlZWtGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3Jp
Z2luIG9yaWdpbikKK3sKKyAgICBpbnQgd2hlbmNlID0gU0VFS19TRVQ7CisgICAgc3dpdGNoIChv
cmlnaW4pIHsKKyAgICBjYXNlIFNFRUtfRlJPTV9DVVJSRU5UOiB3aGVuY2UgPSBTRUVLX0NVUjsg
YnJlYWs7CisgICAgY2FzZSBTRUVLX0ZST01fRU5EOiB3aGVuY2UgPSBTRUVLX0VORDsgYnJlYWs7
CisgICAgY2FzZSBTRUVLX0ZST01fQkVHSU5OSU5HOiB3aGVuY2UgPSBTRUVLX1NFVDsgYnJlYWs7
CisgICAgZGVmYXVsdDogQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxsb25nIGxvbmc+KGxzZWVrKGhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UpKTsKK30K
KworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25n
IG9mZnNldCkKK3sKKyAgICBpZiAoZnRydW5jYXRlKGhhbmRsZSwgb2Zmc2V0KSA8IDApCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW50IHdyaXRlVG9GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
Cit7CisgICAgaW50IHRvdGFsQnl0ZXNXcml0dGVuID0gMDsKKyAgICB3aGlsZSAodG90YWxCeXRl
c1dyaXR0ZW4gPCBsZW5ndGgpIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEhBTkRMRV9F
SU5UUih3cml0ZShoYW5kbGUsIGRhdGEgKyB0b3RhbEJ5dGVzV3JpdHRlbiwgbGVuZ3RoIC0gdG90
YWxCeXRlc1dyaXR0ZW4pKTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA8IDApCisgICAgICAg
ICAgICByZXR1cm4gLTE7CisgICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRl
bjsKKyAgICB9CisKKyAgICByZXR1cm4gdG90YWxCeXRlc1dyaXR0ZW47Cit9CisKK2ludCByZWFk
RnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKK3sKKyAgICBpbnQgdG90YWxCeXRlc1JlYWQgPSAwOworICAgIHdoaWxlICh0b3RhbEJ5dGVz
UmVhZCA8IGxlbmd0aCkgeworICAgICAgICBpbnQgYnl0ZXNSZWFkID0gSEFORExFX0VJTlRSKHJl
YWQoaGFuZGxlLCBkYXRhICsgdG90YWxCeXRlc1JlYWQsIGxlbmd0aCAtIHRvdGFsQnl0ZXNSZWFk
KSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPD0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB0b3RhbEJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7CisgICAgfQorCisgICAgcmV0dXJuIHRv
dGFsQnl0ZXNSZWFkOworfQorCiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52274</attachid>
            <date>2010-04-01 01:15:02 -0700</date>
            <delta_ts>2010-04-02 15:41:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36938-20100401011500.patch</filename>
            <type>text/plain</type>
            <size>4890</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjNmMmJmMy4uOTA5NWJiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0wMSAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIGZpbGUgb3BlcmF0aW9ucyBpbiBGaWxlU3lzdGVt
IGZvciBGaWxlQVBJIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjg5NgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgdGVzdHMgd2lsbCBi
ZSBhZGRlZCB3aGVuIHVwcGVyIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVu
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjp0
cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZEZyb21GaWxlKToKKwogMjAxMC0wMy0zMSAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdp
bi5oOiBGaXggaW5jb25zaXN0ZW50IGxpbmUgZW5kaW5ncy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5k
ZXggODAwMjNkNC4uMTQ2Njc1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTI2LDcgKzI2LDcg
QEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotIAorCiAjaWZuZGVmIEZp
bGVTeXN0ZW1faAogI2RlZmluZSBGaWxlU3lzdGVtX2gKIApAQCAtMTIyLDYgKzEyMiwxNyBAQCB0
eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUg
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwogI2VuZGlmCiAKK2VudW0gRmlsZU9wZW5N
b2RlIHsKKyAgICBPcGVuRm9yUmVhZCA9IDAsCisgICAgT3BlbkZvcldyaXRlCit9OworCitlbnVt
IEZpbGVTZWVrT3JpZ2luIHsKKyAgICBTZWVrRnJvbUJlZ2lubmluZyA9IDAsCisgICAgU2Vla0Zy
b21DdXJyZW50LAorICAgIFNlZWtGcm9tRW5kCit9OworCiBib29sIGZpbGVFeGlzdHMoY29uc3Qg
U3RyaW5nJik7CiBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7CiBib29sIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwpAQCAtMTQxLDggKzE1MiwxMiBAQCBpbmxpbmUg
Ym9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKSB7IHJl
dHVybiBoYW5kbGUgIT0gaQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxk
IGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RGOjpDU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IGNoYXIqIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJik7CitQ
bGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1v
ZGUpOwogdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7Citsb25nIGxvbmcgc2Vl
a0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdp
bik7Citib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZz
ZXQpOwogaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCk7CitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCk7CiAKIC8vIE1ldGhvZHMgZm9yIGRlYWxpbmcgd2l0aCBsb2Fk
YWJsZSBtb2R1bGVzCiBib29sIHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggZDY4MDRmYi4uMGM3NTNh
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMzAs
MTEgKzMwLDE5IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxz
eXMvc3RhdC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8bGliZ2VuLmg+CisjaW5j
bHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKKyNkZWZpbmUgSEFORExFX0VJTlRSKHgpICh7IFwKKyAgICB0eXBlb2Yo
eCkgX19laW50cl9yZXN1bHRfXzsgXAorICAgIGRvIHsgXAorICAgICAgICBfX2VpbnRyX3Jlc3Vs
dF9fID0geDsgXAorICAgIH0gd2hpbGUgKF9fZWludHJfcmVzdWx0X18gPT0gLTEgJiYgZXJybm8g
PT0gRUlOVFIpOyBcCisgICAgX19laW50cl9yZXN1bHRfXztcCit9KQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY1LDYgKzczLDYxIEBAIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpCiAgICAgcmV0dXJuICF1bmxpbmsoZnNSZXAuZGF0YSgpKTsKIH0KIAorUGxhdGZvcm1G
aWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUp
Cit7CisgICAgaW50IHBsYXRmb3JtRmxhZyA9IDA7CisgICAgaWYgKG1vZGUgPT0gT3BlbkZvclJl
YWQpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKKyAgICBlbHNlIGlmIChtb2Rl
ID09IE9wZW5Gb3JXcml0ZSkKKyAgICAgICAgcGxhdGZvcm1GbGFnIHw9IChPX1dST05MWSB8IE9f
Q1JFQVQgfCBPX1RSVU5DKTsKKyAgICByZXR1cm4gb3BlbihwYXRoLnV0ZjgoKS5kYXRhKCksIHBs
YXRmb3JtRmxhZywgMDY2Nik7Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7
CisgICAgaW50IHdoZW5jZSA9IFNFRUtfU0VUOworICAgIHN3aXRjaCAob3JpZ2luKSB7CisgICAg
Y2FzZSBTZWVrRnJvbUJlZ2lubmluZzogd2hlbmNlID0gU0VFS19TRVQ7IGJyZWFrOworICAgIGNh
c2UgU2Vla0Zyb21DdXJyZW50OiB3aGVuY2UgPSBTRUVLX0NVUjsgYnJlYWs7CisgICAgY2FzZSBT
ZWVrRnJvbUVuZDogd2hlbmNlID0gU0VFS19FTkQ7IGJyZWFrOworICAgIGRlZmF1bHQ6IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25n
Pihsc2VlayhoYW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgaWYg
KGZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCkgPCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGludCB0b3RhbEJ5
dGVzV3JpdHRlbiA9IDA7CisgICAgd2hpbGUgKHRvdGFsQnl0ZXNXcml0dGVuIDwgbGVuZ3RoKSB7
CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSBIQU5ETEVfRUlOVFIod3JpdGUoaGFuZGxlLCBk
YXRhICsgdG90YWxCeXRlc1dyaXR0ZW4sIGxlbmd0aCAtIHRvdGFsQnl0ZXNXcml0dGVuKSk7Cisg
ICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAg
ICAgICB0b3RhbEJ5dGVzV3JpdHRlbiArPSBieXRlc1dyaXR0ZW47CisgICAgfQorCisgICAgcmV0
dXJuIHRvdGFsQnl0ZXNXcml0dGVuOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgaW50IHRvdGFs
Qnl0ZXNSZWFkID0gMDsKKyAgICB3aGlsZSAodG90YWxCeXRlc1JlYWQgPCBsZW5ndGgpIHsKKyAg
ICAgICAgaW50IGJ5dGVzUmVhZCA9IEhBTkRMRV9FSU5UUihyZWFkKGhhbmRsZSwgZGF0YSArIHRv
dGFsQnl0ZXNSZWFkLCBsZW5ndGggLSB0b3RhbEJ5dGVzUmVhZCkpOworICAgICAgICBpZiAoYnl0
ZXNSZWFkIDw9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgdG90YWxCeXRlc1JlYWQg
Kz0gYnl0ZXNSZWFkOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzUmVhZDsKK30KKwog
Ym9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQ1N0
cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52460</attachid>
            <date>2010-04-02 15:41:12 -0700</date>
            <delta_ts>2010-04-06 14:25:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36938-20100402154110.patch</filename>
            <type>text/plain</type>
            <size>4972</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmU4ZDlhNC4uNWY1MzE2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0wMiAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucyBmb3IgRmls
ZVJlYWRlci9GaWxlV3JpdGVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM2OTM4CisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB3aWxsIGFk
ZCB3aGVuIHdlIGltcGxlbWVudCB1cHBlciBsYXllcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9G
aWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6dHJ1bmNhdGVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ondy
aXRlVG9GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmlsZSk6CisKIDIwMTAtMDQt
MDIgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgYnVpbGQgZml4IHdoZW4gYnVpbGRpbmcgLS1uby1zdmcuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oCmluZGV4IDgwMDIzZDQuLjE0NjY3NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0y
Niw3ICsyNiw3IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwog
I2lmbmRlZiBGaWxlU3lzdGVtX2gKICNkZWZpbmUgRmlsZVN5c3RlbV9oCiAKQEAgLTEyMiw2ICsx
MjIsMTcgQEAgdHlwZWRlZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOwogY29uc3QgUGxhdGZvcm1G
aWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKICNlbmRpZgogCitlbnVt
IEZpbGVPcGVuTW9kZSB7CisgICAgT3BlbkZvclJlYWQgPSAwLAorICAgIE9wZW5Gb3JXcml0ZQor
fTsKKworZW51bSBGaWxlU2Vla09yaWdpbiB7CisgICAgU2Vla0Zyb21CZWdpbm5pbmcgPSAwLAor
ICAgIFNlZWtGcm9tQ3VycmVudCwKKyAgICBTZWVrRnJvbUVuZAorfTsKKwogYm9vbCBmaWxlRXhp
c3RzKGNvbnN0IFN0cmluZyYpOwogYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogYm9v
bCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTE0MSw4ICsxNTIsMTIg
QEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVu
YW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdURjo6Q1N0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBjaGFyKiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYpOworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlKTsKIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOworbG9u
ZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmls
ZVNlZWtPcmlnaW4pOworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0KTsKIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAvLyBNZXRob2RzIGZvciBkZWFsaW5n
IHdpdGggbG9hZGFibGUgbW9kdWxlcwogYm9vbCB1bmxvYWRNb2R1bGUoUGxhdGZvcm1Nb2R1bGUp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGQ2ODA0
ZmIuLjU3YTM2YjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKQEAgLTMwLDExICszMCwxOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi0j
aW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGxpYmdl
bi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisjZGVmaW5lIEhBTkRMRV9FSU5UUih4KSAoeyBcCisg
ICAgdHlwZW9mKHgpIF9fZWludHJfcmVzdWx0X187IFwKKyAgICBkbyB7IFwKKyAgICAgICAgX19l
aW50cl9yZXN1bHRfXyA9IHg7IFwKKyAgICB9IHdoaWxlIChfX2VpbnRyX3Jlc3VsdF9fID09IC0x
ICYmIGVycm5vID09IEVJTlRSKTsgXAorICAgIF9fZWludHJfcmVzdWx0X187XAorfSkKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NSw2ICs3Myw2NiBAQCBib29sIGRlbGV0ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiAhdW5saW5rKGZzUmVwLmRhdGEoKSk7CiB9CiAK
K1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVu
TW9kZSBtb2RlKQoreworICAgIGludCBwbGF0Zm9ybUZsYWcgPSAwOworICAgIGlmIChtb2RlID09
IE9wZW5Gb3JSZWFkKQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7CisgICAgZWxz
ZSBpZiAobW9kZSA9PSBPcGVuRm9yV3JpdGUpCisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSAoT19X
Uk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisgICAgcmV0dXJuIG9wZW4ocGF0aC51dGY4KCku
ZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYpOworfQorCit2b2lkIGNsb3NlRmlsZShQbGF0Zm9y
bUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBjbG9zZShoYW5kbGUpOworfQorCitsb25nIGxv
bmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwg
RmlsZVNlZWtPcmlnaW4gb3JpZ2luKQoreworICAgIGludCB3aGVuY2UgPSBTRUVLX1NFVDsKKyAg
ICBzd2l0Y2ggKG9yaWdpbikgeworICAgIGNhc2UgU2Vla0Zyb21CZWdpbm5pbmc6IHdoZW5jZSA9
IFNFRUtfU0VUOyBicmVhazsKKyAgICBjYXNlIFNlZWtGcm9tQ3VycmVudDogd2hlbmNlID0gU0VF
S19DVVI7IGJyZWFrOworICAgIGNhc2UgU2Vla0Zyb21FbmQ6IHdoZW5jZSA9IFNFRUtfRU5EOyBi
cmVhazsKKyAgICBkZWZhdWx0OiBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkp
OworfQorCitib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25n
IGxvbmcgb2Zmc2V0KQoreworICAgIGlmIChmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpIDwgMCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitpbnQgd3JpdGVU
b0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKK3sKKyAgICBpbnQgdG90YWxCeXRlc1dyaXR0ZW4gPSAwOworICAgIHdoaWxlICh0b3Rh
bEJ5dGVzV3JpdHRlbiA8IGxlbmd0aCkgeworICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gSEFO
RExFX0VJTlRSKHdyaXRlKGhhbmRsZSwgZGF0YSArIHRvdGFsQnl0ZXNXcml0dGVuLCBsZW5ndGgg
LSB0b3RhbEJ5dGVzV3JpdHRlbikpOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuIDwgMCkKKyAg
ICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gYnl0ZXNX
cml0dGVuOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjsKK30KKworaW50
IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKQoreworICAgIGludCB0b3RhbEJ5dGVzUmVhZCA9IDA7CisgICAgd2hpbGUgKHRvdGFs
Qnl0ZXNSZWFkIDwgbGVuZ3RoKSB7CisgICAgICAgIGludCBieXRlc1JlYWQgPSBIQU5ETEVfRUlO
VFIocmVhZChoYW5kbGUsIGRhdGEgKyB0b3RhbEJ5dGVzUmVhZCwgbGVuZ3RoIC0gdG90YWxCeXRl
c1JlYWQpKTsKKyAgICAgICAgaWYgKGJ5dGVzUmVhZCA8PSAwKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIHRvdGFsQnl0ZXNSZWFkICs9IGJ5dGVzUmVhZDsKKyAgICB9CisKKyAgICByZXR1
cm4gdG90YWxCeXRlc1JlYWQ7Cit9CisKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52666</attachid>
            <date>2010-04-06 14:25:09 -0700</date>
            <delta_ts>2010-04-06 15:03:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36938-20100406142508.patch</filename>
            <type>text/plain</type>
            <size>5267</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmU4ZDlhNC4uZGZlMjVkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0wNiAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucyBmb3IgRmls
ZVJlYWRlci9GaWxlV3JpdGVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM2OTM4CisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB0ZXN0cyB3
aWxsIGJlIGFkZGVkIGFmdGVyIHdlIGltcGxlbWVudCB1cHBlciBsYXllcnMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAq
IHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpv
cGVuRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjbG9zZUZpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2Vla0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6dHJ1bmNhdGVGaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmlsZSk6
CisKIDIwMTAtMDQtMDIgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IHdoZW4gYnVpbGRpbmcgLS1uby1zdmcu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IDgwMDIzZDQuLjY2MzQ1OGYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oCkBAIC0yNiw3ICsyNiw3IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KLSAKKwogI2lmbmRlZiBGaWxlU3lzdGVtX2gKICNkZWZpbmUgRmlsZVN5c3RlbV9oCiAK
QEAgLTEyMiw2ICsxMjIsMTcgQEAgdHlwZWRlZiBpbnQgUGxhdGZvcm1GaWxlSGFuZGxlOwogY29u
c3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKICNl
bmRpZgogCitlbnVtIEZpbGVPcGVuTW9kZSB7CisgICAgT3BlbkZvclJlYWQgPSAwLAorICAgIE9w
ZW5Gb3JXcml0ZQorfTsKKworZW51bSBGaWxlU2Vla09yaWdpbiB7CisgICAgU2Vla0Zyb21CZWdp
bm5pbmcgPSAwLAorICAgIFNlZWtGcm9tQ3VycmVudCwKKyAgICBTZWVrRnJvbUVuZAorfTsKKwog
Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0
cmluZyYpOwogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTE0
MSw4ICsxNTIsMTUgQEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZp
bGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIAogLy8gUHJlZml4IGlzIHdo
YXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0
aC4KIFdURjo6Q1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBjaGFyKiBwcmVmaXgsIFBs
YXRmb3JtRmlsZUhhbmRsZSYpOworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSYpOworLy8gUmV0dXJucyBzZWVrZWQgb2Zmc2V0IGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVy
d2lzZS4KK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSwgbG9uZyBsb25nIG9mZnNldCk7CisvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBhY3R1
YWxseSByZWFkIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVyd2lzZS4KIGludCB3cml0ZVRvRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOworLy8gUmV0
dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpZiBzdWNjZXNzZnVsLCAtMSBv
dGhlcndpc2UuCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgY2hhciogZGF0
YSwgaW50IGxlbmd0aCk7CiAKIC8vIE1ldGhvZHMgZm9yIGRlYWxpbmcgd2l0aCBsb2FkYWJsZSBt
b2R1bGVzCiBib29sIHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggZDY4MDRmYi4uNTQyNzk0OCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMzAsMTEgKzMw
LDExIEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8bGliZ2VuLmg+CisjaW5jbHVkZSA8
c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsNiArNjUsNzcgQEAgYm9vbCBk
ZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gIXVubGluayhmc1JlcC5k
YXRhKCkpOwogfQogCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK3sKKyAgICBpbnQgcGxhdGZvcm1GbGFnID0gMDsKKyAg
ICBpZiAobW9kZSA9PSBPcGVuRm9yUmVhZCkKKyAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9fUkRP
TkxZOworICAgIGVsc2UgaWYgKG1vZGUgPT0gT3BlbkZvcldyaXRlKQorICAgICAgICBwbGF0Zm9y
bUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMpOworICAgIHJldHVybiBvcGVu
KHBhdGgudXRmOCgpLmRhdGEoKSwgcGxhdGZvcm1GbGFnLCAwNjY2KTsKK30KKwordm9pZCBjbG9z
ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaWYgKGlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkgeworICAgICAgICBjbG9zZShoYW5kbGUpOworICAgICAgICBoYW5kbGUgPSBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30KKworbG9uZyBsb25nIHNlZWtGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3Jp
Z2luIG9yaWdpbikKK3sKKyAgICBpbnQgd2hlbmNlID0gU0VFS19TRVQ7CisgICAgc3dpdGNoIChv
cmlnaW4pIHsKKyAgICBjYXNlIFNlZWtGcm9tQmVnaW5uaW5nOgorICAgICAgICB3aGVuY2UgPSBT
RUVLX1NFVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZWVrRnJvbUN1cnJlbnQ6CisgICAg
ICAgIHdoZW5jZSA9IFNFRUtfQ1VSOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlZWtGcm9t
RW5kOgorICAgICAgICB3aGVuY2UgPSBTRUVLX0VORDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxsb25nIGxvbmc+KGxzZWVrKGhhbmRsZSwgb2Zmc2V0LCB3aGVuY2UpKTsKK30K
KworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25n
IG9mZnNldCkKK3sKKyAgICAvLyBBIHJldHVybiB2YWx1ZSAwIGluZGljYXRlcyB0aGUgY2FsbCBz
dWNjZWVkcy4KKyAgICByZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2lu
dCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQoreworICAgIGludCB0b3RhbEJ5dGVzV3JpdHRlbiA9IDA7CisgICAgd2hp
bGUgKHRvdGFsQnl0ZXNXcml0dGVuIDwgbGVuZ3RoKSB7CisgICAgICAgIGludCBieXRlc1dyaXR0
ZW4gPSB3cml0ZShoYW5kbGUsIGRhdGEgKyB0b3RhbEJ5dGVzV3JpdHRlbiwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGggLSB0b3RhbEJ5dGVzV3JpdHRlbikpOworICAgICAgICBpZiAoYnl0ZXNX
cml0dGVuIDwgMCAmJiBlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAg
ICAgICAgaWYgKGVycm5vICE9IEVJTlRSKQorICAgICAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4g
Kz0gYnl0ZXNXcml0dGVuOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjsK
K30KKworaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGludCB0b3RhbEJ5dGVzUmVhZCA9IDA7CisgICAgd2hp
bGUgKHRvdGFsQnl0ZXNSZWFkIDwgbGVuZ3RoKSB7CisgICAgICAgIGludCBieXRlc1JlYWQgPSBy
ZWFkKGhhbmRsZSwgZGF0YSArIHRvdGFsQnl0ZXNSZWFkLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxl
bmd0aCAtIHRvdGFsQnl0ZXNSZWFkKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPD0gMCAmJiBl
cnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoZXJybm8gIT0g
RUlOVFIpCisgICAgICAgICAgICB0b3RhbEJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7CisgICAgfQor
CisgICAgcmV0dXJuIHRvdGFsQnl0ZXNSZWFkOworfQorCiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52673</attachid>
            <date>2010-04-06 15:03:51 -0700</date>
            <delta_ts>2010-04-06 17:30:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36938-20100406150349.patch</filename>
            <type>text/plain</type>
            <size>5265</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmU4ZDlhNC4uZTM3MmM4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0wNiAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucyBmb3IgRmls
ZVJlYWRlci9GaWxlV3JpdGVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM2OTM4CisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB0ZXN0cyB3
aWxsIGJlIGFkZGVkIHdoZW4gd2UgaW1wbGVtZW50IHVwcGVyIGxheWVycy4KKworICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICog
cGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZWVrRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVUb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZyb21GaWxlKToK
KwogMjAxMC0wNC0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggd2hlbiBidWlsZGluZyAtLW5vLXN2Zy4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggODAwMjNkNC4uNjYzNDU4ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmgKQEAgLTI2LDcgKzI2LDcgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwotIAorCiAjaWZuZGVmIEZpbGVTeXN0ZW1faAogI2RlZmluZSBGaWxlU3lzdGVtX2gKIApA
QCAtMTIyLDYgKzEyMiwxNyBAQCB0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25z
dCBQbGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwogI2Vu
ZGlmCiAKK2VudW0gRmlsZU9wZW5Nb2RlIHsKKyAgICBPcGVuRm9yUmVhZCA9IDAsCisgICAgT3Bl
bkZvcldyaXRlCit9OworCitlbnVtIEZpbGVTZWVrT3JpZ2luIHsKKyAgICBTZWVrRnJvbUJlZ2lu
bmluZyA9IDAsCisgICAgU2Vla0Zyb21DdXJyZW50LAorICAgIFNlZWtGcm9tRW5kCit9OworCiBi
b29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3Ry
aW5nJik7CiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwpAQCAtMTQx
LDggKzE1MiwxNSBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogCiAvLyBQcmVmaXggaXMgd2hh
dCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRo
LgogV1RGOjpDU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IGNoYXIqIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJik7CitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwogdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlJik7CisvLyBSZXR1cm5zIHNlZWtlZCBvZmZzZXQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3
aXNlLgorbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9m
ZnNldCwgRmlsZVNlZWtPcmlnaW4pOworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlLCBsb25nIGxvbmcgb2Zmc2V0KTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVh
bGx5IHJlYWQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgogaW50IHdyaXRlVG9GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisvLyBSZXR1
cm5zIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90
aGVyd2lzZS4KK2ludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKTsKIAogLy8gTWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoIGxvYWRhYmxlIG1v
ZHVsZXMKIGJvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBkNjgwNGZiLi5lNWE1NWQ3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0zMCwxMSArMzAs
MTEgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2luY2x1ZGUgPHN5cy9zdGF0
Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxsaWJnZW4uaD4KKyNpbmNsdWRlIDxz
eXMvc3RhdC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NSw2ICs2NSw3NyBAQCBib29sIGRl
bGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiAhdW5saW5rKGZzUmVwLmRh
dGEoKSk7CiB9CiAKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIGludCBwbGF0Zm9ybUZsYWcgPSAwOworICAg
IGlmIChtb2RlID09IE9wZW5Gb3JSZWFkKQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9O
TFk7CisgICAgZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yV3JpdGUpCisgICAgICAgIHBsYXRmb3Jt
RmxhZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisgICAgcmV0dXJuIG9wZW4o
cGF0aC51dGY4KCkuZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYpOworfQorCit2b2lkIGNsb3Nl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5kbGVWYWxp
ZChoYW5kbGUpKSB7CisgICAgICAgIGNsb3NlKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgfQorfQorCitsb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4gb3JpZ2luKQoreworICAgIGludCB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICBzd2l0Y2ggKG9y
aWdpbikgeworICAgIGNhc2UgU2Vla0Zyb21CZWdpbm5pbmc6CisgICAgICAgIHdoZW5jZSA9IFNF
RUtfU0VUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlZWtGcm9tQ3VycmVudDoKKyAgICAg
ICAgd2hlbmNlID0gU0VFS19DVVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Vla0Zyb21F
bmQ6CisgICAgICAgIHdoZW5jZSA9IFNFRUtfRU5EOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOworfQor
Citib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcg
b2Zmc2V0KQoreworICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm4gMCB0byBpbmRpY2F0ZSB0aGUgc3Vj
Y2Vzcy4KKyAgICByZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCB3
cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKQoreworICAgIGludCB0b3RhbEJ5dGVzV3JpdHRlbiA9IDA7CisgICAgd2hpbGUg
KHRvdGFsQnl0ZXNXcml0dGVuIDwgbGVuZ3RoKSB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4g
PSB3cml0ZShoYW5kbGUsIGRhdGEgKyB0b3RhbEJ5dGVzV3JpdHRlbiwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihsZW5ndGggLSB0b3RhbEJ5dGVzV3JpdHRlbikpOworICAgICAgICBpZiAoYnl0ZXNXcml0
dGVuIDwgMCAmJiBlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAg
ICAgaWYgKGJ5dGVzV3JpdHRlbiA+IDApCisgICAgICAgICAgICB0b3RhbEJ5dGVzV3JpdHRlbiAr
PSBieXRlc1dyaXR0ZW47CisgICAgfQorCisgICAgcmV0dXJuIHRvdGFsQnl0ZXNXcml0dGVuOwor
fQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpCit7CisgICAgaW50IHRvdGFsQnl0ZXNSZWFkID0gMDsKKyAgICB3aGls
ZSAodG90YWxCeXRlc1JlYWQgPCBsZW5ndGgpIHsKKyAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJl
YWQoaGFuZGxlLCBkYXRhICsgdG90YWxCeXRlc1JlYWQsIHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoIC0gdG90YWxCeXRlc1JlYWQpKTsKKyAgICAgICAgaWYgKGJ5dGVzUmVhZCA8PSAwICYmIGVy
cm5vICE9IEVJTlRSKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChieXRlc1JlYWQg
PiAwKQorICAgICAgICAgICAgdG90YWxCeXRlc1JlYWQgKz0gYnl0ZXNSZWFkOworICAgIH0KKwor
ICAgIHJldHVybiB0b3RhbEJ5dGVzUmVhZDsKK30KKwogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52687</attachid>
            <date>2010-04-06 17:30:12 -0700</date>
            <delta_ts>2010-04-06 17:58:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36938-20100406173010.patch</filename>
            <type>text/plain</type>
            <size>4956</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmU4ZDlhNC4uNDgyOGI0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0wNiAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucyBmb3IgRmls
ZVJlYWRlci9GaWxlV3JpdGVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM2OTM4CisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB3aWxsIGJl
IGFkZGVkIHdoZW4gd2UgaW1wbGVtZW50IHVwcGVyIGxheWVycy4KKworICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWVr
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVUb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZyb21GaWxlKToKKwogMjAx
MC0wNC0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggd2hlbiBidWlsZGluZyAtLW5vLXN2Zy4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3lzdGVtLmgKaW5kZXggODAwMjNkNC4uMzljNzliYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgK
QEAgLTI2LDcgKzI2LDcgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwot
IAorCiAjaWZuZGVmIEZpbGVTeXN0ZW1faAogI2RlZmluZSBGaWxlU3lzdGVtX2gKIApAQCAtMTIy
LDYgKzEyMiwxNyBAQCB0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25zdCBQbGF0
Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwogI2VuZGlmCiAK
K2VudW0gRmlsZU9wZW5Nb2RlIHsKKyAgICBPcGVuRm9yUmVhZCA9IDAsCisgICAgT3BlbkZvcldy
aXRlCit9OworCitlbnVtIEZpbGVTZWVrT3JpZ2luIHsKKyAgICBTZWVrRnJvbUJlZ2lubmluZyA9
IDAsCisgICAgU2Vla0Zyb21DdXJyZW50LAorICAgIFNlZWtGcm9tRW5kCit9OworCiBib29sIGZp
bGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7
CiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwpAQCAtMTQxLDggKzE1
MiwxNSBAQCBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUg
ZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV1RG
OjpDU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IGNoYXIqIHByZWZpeCwgUGxhdGZvcm1G
aWxlSGFuZGxlJik7CitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBGaWxlT3Blbk1vZGUpOwogdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJik7
CisvLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0
aGUgZmlsZSBpZiBzdWNjZXNzZnVsLCAtMSBvdGhlcndpc2UuCitsb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbik7Citi
b29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpOwor
Ly8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBpZiBzdWNjZXNzZnVsLCAt
MSBvdGhlcndpc2UuCiBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVh
bGx5IHdyaXR0ZW4gaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgoraW50IHJlYWRGcm9tRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAvLyBNZXRo
b2RzIGZvciBkZWFsaW5nIHdpdGggbG9hZGFibGUgbW9kdWxlcwogYm9vbCB1bmxvYWRNb2R1bGUo
UGxhdGZvcm1Nb2R1bGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCmluZGV4IGQ2ODA0ZmIuLjY4NzQxYjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTMwLDExICszMCwxMSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgotCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgog
I2luY2x1ZGUgPGxpYmdlbi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5p
c3RkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTY1LDYgKzY1LDY5IEBAIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpCiAgICAgcmV0dXJuICF1bmxpbmsoZnNSZXAuZGF0YSgpKTsKIH0KIAorUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7
CisgICAgaW50IHBsYXRmb3JtRmxhZyA9IDA7CisgICAgaWYgKG1vZGUgPT0gT3BlbkZvclJlYWQp
CisgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKKyAgICBlbHNlIGlmIChtb2RlID09
IE9wZW5Gb3JXcml0ZSkKKyAgICAgICAgcGxhdGZvcm1GbGFnIHw9IChPX1dST05MWSB8IE9fQ1JF
QVQgfCBPX1RSVU5DKTsKKyAgICByZXR1cm4gb3BlbihwYXRoLnV0ZjgoKS5kYXRhKCksIHBsYXRm
b3JtRmxhZywgMDY2Nik7Cit9CisKK3ZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYg
aGFuZGxlKQoreworICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICAgICAgY2xv
c2UoaGFuZGxlKTsKKyAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsK
KyAgICB9Cit9CisKK2xvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCit7CisgICAgaW50IHdo
ZW5jZSA9IFNFRUtfU0VUOworICAgIHN3aXRjaCAob3JpZ2luKSB7CisgICAgY2FzZSBTZWVrRnJv
bUJlZ2lubmluZzoKKyAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU2Vla0Zyb21DdXJyZW50OgorICAgICAgICB3aGVuY2UgPSBTRUVLX0NVUjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTZWVrRnJvbUVuZDoKKyAgICAgICAgd2hlbmNlID0gU0VF
S19FTkQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihsc2Vl
ayhoYW5kbGUsIG9mZnNldCwgd2hlbmNlKSk7Cit9CisKK2Jvb2wgdHJ1bmNhdGVGaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpCit7CisgICAgLy8gZnRydW5j
YXRlIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4KKyAgICByZXR1cm4gIWZ0cnVu
Y2F0ZShoYW5kbGUsIG9mZnNldCk7Cit9CisKK2ludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGRvIHsK
KyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlKGhhbmRsZSwgZGF0YSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA+PSAwKQorICAg
ICAgICAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKKyAgICB9IHdoaWxlIChlcnJubyA9PSBFSU5U
Uik7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7CisgICAgZG8geworICAgICAg
ICBpbnQgYnl0ZXNSZWFkID0gcmVhZChoYW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoKSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgPj0gMCkKKyAgICAgICAgICAgIHJldHVy
biBieXRlc1JlYWQ7CisgICAgfSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOworICAgIHJldHVybiAt
MTsKK30KKwogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52688</attachid>
            <date>2010-04-06 17:58:23 -0700</date>
            <delta_ts>2010-04-06 18:29:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36938-20100406175821.patch</filename>
            <type>text/plain</type>
            <size>4978</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmU4ZDlhNC4uZDI1Yjg1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNC0wNiAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucyBmb3IgRmls
ZVJlYWRlci9GaWxlV3JpdGVyIHN1cHBvcnQgZm9yIFBPU0lYIChpbmNsLiBNYWMpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjkzOAorCisgICAgICAg
IE5vIG5ldyB0ZXN0czsgd2lsbCBiZSBhZGRlZCB3aGVuIHdlIGltcGxlbWVudCB1cHBlciBsYXll
cnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3Jl
OjopOgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVuRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjbG9zZUZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6dHJ1bmNhdGVG
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRGcm9tRmlsZSk6CisKIDIwMTAtMDQtMDIgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5n
b21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IHdoZW4gYnVp
bGRpbmcgLS1uby1zdmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aCBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IDgwMDIzZDQuLjM5Yzc5YmIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0yNiw3ICsyNiw3IEBACiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2lmbmRlZiBGaWxlU3lzdGVtX2gKICNkZWZpbmUg
RmlsZVN5c3RlbV9oCiAKQEAgLTEyMiw2ICsxMjIsMTcgQEAgdHlwZWRlZiBpbnQgUGxhdGZvcm1G
aWxlSGFuZGxlOwogY29uc3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgPSAtMTsKICNlbmRpZgogCitlbnVtIEZpbGVPcGVuTW9kZSB7CisgICAgT3BlbkZvclJl
YWQgPSAwLAorICAgIE9wZW5Gb3JXcml0ZQorfTsKKworZW51bSBGaWxlU2Vla09yaWdpbiB7Cisg
ICAgU2Vla0Zyb21CZWdpbm5pbmcgPSAwLAorICAgIFNlZWtGcm9tQ3VycmVudCwKKyAgICBTZWVr
RnJvbUVuZAorfTsKKwogYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogYm9vbCBkZWxl
dGVGaWxlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmKTsKQEAgLTE0MSw4ICsxNTIsMTUgQEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChj
b25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIAog
Ly8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBu
b3QgdGhlIGZ1bGwgcGF0aC4KIFdURjo6Q1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBj
aGFyKiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOworUGxhdGZvcm1GaWxlSGFuZGxlIG9w
ZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKIHZvaWQgY2xvc2VGaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSYpOworLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBm
cm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNl
LgorbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nIG9mZnNl
dCwgRmlsZVNlZWtPcmlnaW4pOworYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
LCBsb25nIGxvbmcgb2Zmc2V0KTsKKy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5
IHJlYWQgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgogaW50IHdyaXRlVG9GaWxlKFBsYXRm
b3JtRmlsZUhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisvLyBSZXR1cm5z
IG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlmIHN1Y2Nlc3NmdWwsIC0xIG90aGVy
d2lzZS4KK2ludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKIAogLy8gTWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoIGxvYWRhYmxlIG1vZHVs
ZXMKIGJvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBkNjgwNGZiLi42ODc0MWI2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0zMCwxMSArMzAsMTEg
QEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
CisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxsaWJnZW4uaD4KKyNpbmNsdWRlIDxzeXMv
c3RhdC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NSw2ICs2NSw2OSBAQCBib29sIGRlbGV0
ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiAhdW5saW5rKGZzUmVwLmRhdGEo
KSk7CiB9CiAKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgs
IEZpbGVPcGVuTW9kZSBtb2RlKQoreworICAgIGludCBwbGF0Zm9ybUZsYWcgPSAwOworICAgIGlm
IChtb2RlID09IE9wZW5Gb3JSZWFkKQorICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19SRE9OTFk7
CisgICAgZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yV3JpdGUpCisgICAgICAgIHBsYXRmb3JtRmxh
ZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisgICAgcmV0dXJuIG9wZW4ocGF0
aC51dGY4KCkuZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYpOworfQorCit2b2lkIGNsb3NlRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoaXNIYW5kbGVWYWxpZCho
YW5kbGUpKSB7CisgICAgICAgIGNsb3NlKGhhbmRsZSk7CisgICAgICAgIGhhbmRsZSA9IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgfQorfQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
b3JpZ2luKQoreworICAgIGludCB3aGVuY2UgPSBTRUVLX1NFVDsKKyAgICBzd2l0Y2ggKG9yaWdp
bikgeworICAgIGNhc2UgU2Vla0Zyb21CZWdpbm5pbmc6CisgICAgICAgIHdoZW5jZSA9IFNFRUtf
U0VUOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlZWtGcm9tQ3VycmVudDoKKyAgICAgICAg
d2hlbmNlID0gU0VFS19DVVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Vla0Zyb21FbmQ6
CisgICAgICAgIHdoZW5jZSA9IFNFRUtfRU5EOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZzZXQsIHdoZW5jZSkpOworfQorCiti
b29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zm
c2V0KQoreworICAgIC8vIGZ0cnVuY2F0ZSByZXR1cm5zIDAgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nl
c3MuCisgICAgcmV0dXJuICFmdHJ1bmNhdGUoaGFuZGxlLCBvZmZzZXQpOworfQorCitpbnQgd3Jp
dGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKK3sKKyAgICBkbyB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZSho
YW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CisgICAgICAgIGlmIChi
eXRlc1dyaXR0ZW4gPj0gMCkKKyAgICAgICAgICAgIHJldHVybiBieXRlc1dyaXR0ZW47CisgICAg
fSB3aGlsZSAoZXJybm8gPT0gRUlOVFIpOworICAgIHJldHVybiAtMTsKK30KKworaW50IHJlYWRG
cm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQoreworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQoaGFuZGxlLCBkYXRh
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOworICAgICAgICBpZiAoYnl0ZXNSZWFkID49
IDApCisgICAgICAgICAgICByZXR1cm4gYnl0ZXNSZWFkOworICAgIH0gd2hpbGUgKGVycm5vID09
IEVJTlRSKTsKKyAgICByZXR1cm4gLTE7Cit9CisKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>