<?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>13138</bug_id>
          
          <creation_ts>2007-03-20 16:50:31 -0700</creation_ts>
          <short_desc>StringImpl::isLower calls |islower| for non-ASCII characters</short_desc>
          <delta_ts>2007-03-28 15:09:13 -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>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jungshik Shin">jshin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>18082</commentid>
    <comment_count>0</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-20 16:50:31 -0700</bug_when>
    <thetext>StringImpl::isLower calls |islower| for non-ASCII characters. This leads to an assertion in debug build. 

It can be easily avoided, but it&apos;d sacrifice performance for ASCII strings. 

In StringImpl.cpp, there are a few similar cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17998</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-20 22:24:22 -0700</bug_when>
    <thetext>Reporter, did you mean that this causes an assertion failure in debug builds of WebKit on Mac OS X? What line does it happen on? How can one reproduce the problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17698</commentid>
    <comment_count>2</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-22 16:50:09 -0700</bug_when>
    <thetext>Different C libraries differ in the way they treat values beyond 0xFF. The man page of islower on Mac OS 10.4 has the following to say about it. 



COMPATIBILITY
     The 4.4BSD extension of accepting arguments outside of the range of the
     unsigned char type in locales with large character sets is considered
     obsolete and may not be supported in future releases.  The iswlower()
     function should be used instead.

---------

Because the code in question is XP, I think we should not try to squeeze out every bit of performance by being TOO clever, which may lead to a compatibility issue.  

There are a couple of other places that use a similar trick in StringImpl.cpp. I&apos;ll upload a patch soon. 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17648</commentid>
    <comment_count>3</comment_count>
      <attachid>13799</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-24 13:34:26 -0700</bug_when>
    <thetext>Created attachment 13799
path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17649</commentid>
    <comment_count>4</comment_count>
      <attachid>13799</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-24 13:37:01 -0700</bug_when>
    <thetext>Comment on attachment 13799
path

this patch &apos;fixes&apos; both isLower and lower. 

This is still broken for non-BMP characters, though. We may just consider calling the corresponding ICU functions because ICU folks must have done a good job at both optimization and &apos;correctness&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17462</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-24 19:47:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 13799 [edit])
&gt; this patch &apos;fixes&apos; both isLower and lower. 
&gt; 
&gt; This is still broken for non-BMP characters, though. We may just consider
&gt; calling the corresponding ICU functions because ICU folks must have done a good
&gt; job at both optimization and &apos;correctness&apos;. 

There are two different operations. One is &quot;is lowercase&quot;. For that we should use the Unicode functions in WTF, which call through to ICU.

The other is &quot;is lowercase ASCII&quot;. There are lots of places that need this operation. I believe that if you look at the clients of StringImpl::isLower you&apos;ll see that &quot;is all lowercase ASCII&quot; is what almost all those clients want. So we might want to rename it. There&apos;s no reason to use the more-general much slower &quot;is lowercase&quot; operation.

Contrary to what you say here, the ICU &quot;islower&quot; operation is much much slower and shows up on profiles when we use it excessively.

Now as to the misuse of &lt;ctype.h&gt;, it&apos;s true, there&apos;s a lot of code that calls &lt;ctype.h&gt; and expects non-standard behavior of returning false for non-ASCII characters. We should fix all of that code. Not just StringImpl::isLower.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17456</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-24 19:48:29 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Because the code in question is XP, I think we should not try to squeeze out
&gt; every bit of performance by being TOO clever, which may lead to a compatibility
&gt; issue.  

I don&apos;t agree with this. We need to squeeze out every bit of performance. There&apos;s no reason we can&apos;t have both good cross-platform compatibility and great performance. That should be our goal here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17453</commentid>
    <comment_count>7</comment_count>
      <attachid>13799</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-24 19:53:28 -0700</bug_when>
    <thetext>Comment on attachment 13799
path

This is not acceptable as-is. We need the high speed loop for all ASCII and the loop can&apos;t have a branch in it or it won&apos;t be high speed. I suggest simply and-ing with 0x7F before calling islower. We will ignore the result of islower if the characters are not all ASCII.

    allLower &amp;= islower(c &amp; 0x7F);
    data[i] = tolower(c &amp; 0x7F);


We use &quot;FIXME:&quot;, not &quot;XXX&quot; for comments like that one about non-BMP.

+    // XXX Still broken for non-BMP characters represented in surrogate pairs

What non-BMP characters represented as surrogate pairs are lowercase? I don&apos;t believe there are any. If there are, you should add a regression test to demonstrate the symptom of the incorrect logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17454</commentid>
    <comment_count>8</comment_count>
      <attachid>13806</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-24 19:54:12 -0700</bug_when>
    <thetext>Created attachment 13806
patch with mistakes fixed

there were a couple of mistakes (typo-like) in the previous patch. They&apos;re fixed in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17452</commentid>
    <comment_count>9</comment_count>
      <attachid>13806</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-24 20:01:44 -0700</bug_when>
    <thetext>Comment on attachment 13806
patch with mistakes fixed

review- for the same reasons mentioned in comment #7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17451</commentid>
    <comment_count>10</comment_count>
      <attachid>13807</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-24 20:16:20 -0700</bug_when>
    <thetext>Created attachment 13807
patch 3 : addressing Darin&apos;s concerns

Ok. I made changes you suggested. I also applied the same technique to EqualIgnoringCase. 

As for non-BMP charcters with case distinctions, there are two groups excluding &apos;language tagging characters&apos; (at U+10xxxx) nobody is likely to use. One is Deseret alphabet and the other is Mathematical symbols. 


http://www.unicode.org/charts/PDF/U10400.pdf
http://www.unicode.org/charts/PDF/U1D400.pdf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17444</commentid>
    <comment_count>11</comment_count>
      <attachid>13807</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-24 20:17:27 -0700</bug_when>
    <thetext>Comment on attachment 13807
patch 3 : addressing Darin&apos;s concerns

asking for review.
Sorry I didn&apos;t read your review comment when uploading my 2nd patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17441</commentid>
    <comment_count>12</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-24 20:21:19 -0700</bug_when>
    <thetext>BTW, is the second argument for equalIgnoringCase(const StringImple*, const char*) only ASCII or can it be Latin-1 or whatever locale-dependent encoding? In that case, we need to check its &apos;ASCIIness&apos; as well. 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17437</commentid>
    <comment_count>13</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-24 20:52:51 -0700</bug_when>
    <thetext>(In reply to comment #5)

Thank you for your comments. I also stand corrected about ICU&apos;s islower. 

&gt; The other is &quot;is lowercase ASCII&quot;. There are lots of places that need this
&gt; operation. I believe that if you look at the clients of StringImpl::isLower
&gt; you&apos;ll see that &quot;is all lowercase ASCII&quot; is what almost all those clients want.
&gt; So we might want to rename it. There&apos;s no reason to use the more-general much
&gt; slower &quot;is lowercase&quot; operation.

I&apos;m well aware that there are numerous cases in web browsers where we need fast ASCII-only lowercasing and case-insensitive comparison/match. (BTW, it needs to be noted that assuming all-ASCII on call-sites are *incorrect* in some cases.)  That being said, I agree that we may as well have a separate API for an ASCII-only string : isLowerASCII   

 
&gt; Now as to the misuse of &lt;ctype.h&gt;, it&apos;s true, there&apos;s a lot of code that calls
&gt; &lt;ctype.h&gt; and expects non-standard behavior of returning false for non-ASCII
&gt; characters. We should fix all of that code. Not just StringImpl::isLower.

Yes. bug 12830 is one of them. 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16882</commentid>
    <comment_count>14</comment_count>
      <attachid>13807</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-27 21:53:01 -0700</bug_when>
    <thetext>Comment on attachment 13807
patch 3 : addressing Darin&apos;s concerns

Change looks great, r=me. Setting review- because it doesn&apos;t include a change log entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16875</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-27 21:54:21 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; BTW, is the second argument for equalIgnoringCase(const StringImple*, const
&gt; char*) only ASCII or can it be Latin-1 or whatever locale-dependent encoding?
&gt; In that case, we need to check its &apos;ASCIIness&apos; as well. 

It&apos;s only for ASCII strings; maybe it would be good to have debug-only code that asserts it&apos;s all ASCII so at least we&apos;d find out at runtime if someone misuses it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16721</commentid>
    <comment_count>16</comment_count>
      <attachid>13846</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2007-03-28 11:07:40 -0700</bug_when>
    <thetext>Created attachment 13846
patch with changelog entry

Thanks, Darin. 
I added a changelog entry. Can you check this in if there isn&apos;t any more porblem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16723</commentid>
    <comment_count>17</comment_count>
      <attachid>13846</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-28 11:26:49 -0700</bug_when>
    <thetext>Comment on attachment 13846
patch with changelog entry

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16663</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-28 15:09:13 -0700</bug_when>
    <thetext>Committed revision 20559.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13799</attachid>
            <date>2007-03-24 13:34:26 -0700</date>
            <delta_ts>2007-03-24 19:54:12 -0700</delta_ts>
            <desc>path</desc>
            <filename>13138.patch</filename>
            <type>text/plain</type>
            <size>1562</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFN0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN0cmluZ0ltcGwuY3BwCShyZXZp
c2lvbiAyMDQxNikKKysrIFN0cmluZ0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODUsMjIg
KzM4NSwyMyBAQAogCiBib29sIFN0cmluZ0ltcGw6OmlzTG93ZXIoKSBjb25zdAogewotICAgIC8v
IERvIGEgcXVpY2sgY2hlY2sgZm9yIHRoZSBjYXNlIHdoZXJlIGl0J3MgYWxsIEFTQ0lJLgorICAg
IC8vIERvIGEgcmVsYXRpdmVseSBxdWljayBjaGVjayBmb3IgdGhlIGNhc2Ugd2hlcmUgaXQncyBh
bGwgQVNDSUkuCiAgICAgaW50IGFsbExvd2VyID0gdHJ1ZTsKLSAgICBVQ2hhciBvcmVkID0gMDsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykgeworICAgIHVuc2ln
bmVkIGk7CisgICAgZm9yICggOyBpIDwgbV9sZW5ndGg7IGkrKykgewogICAgICAgICBVQ2hhciBj
ID0gbV9kYXRhW2ldOworICAgICAgICBpZiAoYyA+IDB4N0YpCisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgYWxsTG93ZXIgJj0gaXNsb3dlcihjKTsKLSAgICAgICAgb3JlZCB8PSBjOwogICAg
IH0KLSAgICBpZiAoIShvcmVkICYgfjB4N0YpKQorICAgIGlmIChpID09IG1fbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gYWxsTG93ZXI7CiAKLSAgICAvLyBEbyBhIHNsb3dlciBjaGVjayBmb3IgdGhl
IG90aGVyIGNhc2VzLgotICAgIGJvb2wgYWxsTG93ZXIyID0gdHJ1ZTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykKLSAgICAgICAgYWxsTG93ZXIyICY9IFVuaWNv
ZGU6OmlzTG93ZXIobV9kYXRhW2ldKTsKLSAgICByZXR1cm4gYWxsTG93ZXIyOworICAgIC8vIERv
IGEgc2xvd2VyIGNoZWNrIGZvciB0aGUgcmVzdCBwYXJ0CisgICAgLy8gWFhYIFN0aWxsIGJyb2tl
biBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGluIHN1cnJvZ2F0ZSBwYWlycwor
ICAgIGZvciAoIDsgaSA8IG1fbGVuZ3RoOyBpKyspCisgICAgICAgIGFsbExvd2VyICY9IFVuaWNv
ZGU6OmlzTG93ZXIobV9kYXRhW2ldKTsKKyAgICByZXR1cm4gYWxsTG93ZXI7CiB9CiAKIFN0cmlu
Z0ltcGwqIFN0cmluZ0ltcGw6Omxvd2VyKCkgY29uc3QKQEAgLTQxNiwxMyArNDE3LDEzIEBACiAg
ICAgYy0+bV9sZW5ndGggPSBsZW5ndGg7CiAKICAgICAvLyBEbyBhIGZhc3RlciBsb29wIGZvciB0
aGUgY2FzZSB3aGVyZSBpdCdzIGFsbCBBU0NJSS4KLSAgICBVQ2hhciBvcmVkID0gMDsKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIFVDaGFyIGMgPSBtX2Rh
dGFbaV07Ci0gICAgICAgIG9yZWQgfD0gYzsKKyAgICAgICAgaWYgKGMgPiAweDdGKQorICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRhdGFbaV0gPSB0b2xvd2VyKGMpOwogICAgIH0KLSAgICBp
ZiAoIShvcmVkICYgfjB4N0YpKQorICAgIGlmIChpID09IGxlbmd0aCkKICAgICAgICAgcmV0dXJu
IGM7CiAKICAgICBib29sIGVycm9yOwo=
</data>
<flag name="review"
          id="5509"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13806</attachid>
            <date>2007-03-24 19:54:12 -0700</date>
            <delta_ts>2007-03-24 20:16:20 -0700</delta_ts>
            <desc>patch with mistakes fixed</desc>
            <filename>13138.patch.2</filename>
            <type>text/plain</type>
            <size>1614</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFN0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN0cmluZ0ltcGwuY3BwCShyZXZp
c2lvbiAyMDQxNikKKysrIFN0cmluZ0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODUsMjIg
KzM4NSwyMyBAQAogCiBib29sIFN0cmluZ0ltcGw6OmlzTG93ZXIoKSBjb25zdAogewotICAgIC8v
IERvIGEgcXVpY2sgY2hlY2sgZm9yIHRoZSBjYXNlIHdoZXJlIGl0J3MgYWxsIEFTQ0lJLgorICAg
IC8vIERvIGEgcmVsYXRpdmVseSBxdWljayBjaGVjayBmb3IgdGhlIGNhc2Ugd2hlcmUgaXQncyBh
bGwgQVNDSUkuCiAgICAgaW50IGFsbExvd2VyID0gdHJ1ZTsKLSAgICBVQ2hhciBvcmVkID0gMDsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sZW5ndGg7IGkrKykgeworICAgIHVuc2ln
bmVkIGkgPSAwOworICAgIGZvciAoIDsgaSA8IG1fbGVuZ3RoOyBpKyspIHsKICAgICAgICAgVUNo
YXIgYyA9IG1fZGF0YVtpXTsKKyAgICAgICAgaWYgKGMgPiAweDdGKQorICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGFsbExvd2VyICY9IGlzbG93ZXIoYyk7Ci0gICAgICAgIG9yZWQgfD0gYzsK
ICAgICB9Ci0gICAgaWYgKCEob3JlZCAmIH4weDdGKSkKKyAgICBpZiAoaSA9PSBtX2xlbmd0aCkK
ICAgICAgICAgcmV0dXJuIGFsbExvd2VyOwogCi0gICAgLy8gRG8gYSBzbG93ZXIgY2hlY2sgZm9y
IHRoZSBvdGhlciBjYXNlcy4KLSAgICBib29sIGFsbExvd2VyMiA9IHRydWU7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCi0gICAgICAgIGFsbExvd2VyMiAmPSBV
bmljb2RlOjppc0xvd2VyKG1fZGF0YVtpXSk7Ci0gICAgcmV0dXJuIGFsbExvd2VyMjsKKyAgICAv
LyBEbyBhIHNsb3dlciBjaGVjayBmb3IgdGhlIHJlc3QgcGFydAorICAgIC8vIFhYWCBTdGlsbCBi
cm9rZW4gZm9yIG5vbi1CTVAgY2hhcmFjdGVycyByZXByZXNlbnRlZCBpbiBzdXJyb2dhdGUgcGFp
cnMKKyAgICBmb3IgKCA7IGkgPCBtX2xlbmd0aDsgaSsrKQorICAgICAgICBhbGxMb3dlciAmPSBV
bmljb2RlOjppc0xvd2VyKG1fZGF0YVtpXSk7CisgICAgcmV0dXJuIGFsbExvd2VyOwogfQogCiBT
dHJpbmdJbXBsKiBTdHJpbmdJbXBsOjpsb3dlcigpIGNvbnN0CkBAIC00MTYsMTMgKzQxNywxNCBA
QAogICAgIGMtPm1fbGVuZ3RoID0gbGVuZ3RoOwogCiAgICAgLy8gRG8gYSBmYXN0ZXIgbG9vcCBm
b3IgdGhlIGNhc2Ugd2hlcmUgaXQncyBhbGwgQVNDSUkuCi0gICAgVUNoYXIgb3JlZCA9IDA7Ci0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgIGludCBpID0gMDsKKyAg
ICBmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBVQ2hhciBjID0gbV9kYXRhW2ld
OwotICAgICAgICBvcmVkIHw9IGM7CisgICAgICAgIGlmIChjID4gMHg3RikKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkYXRhW2ldID0gdG9sb3dlcihjKTsKICAgICB9Ci0gICAgaWYgKCEo
b3JlZCAmIH4weDdGKSkKKyAgICBpZiAoaSA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiBjOwog
CiAgICAgYm9vbCBlcnJvcjsK
</data>
<flag name="review"
          id="5515"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13807</attachid>
            <date>2007-03-24 20:16:20 -0700</date>
            <delta_ts>2007-03-28 11:07:40 -0700</delta_ts>
            <desc>patch 3 : addressing Darin&apos;s concerns</desc>
            <filename>13138.patch.3</filename>
            <type>text/plain</type>
            <size>1699</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFN0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFN0cmluZ0ltcGwuY3BwCShyZXZp
c2lvbiAyMDQxNikKKysrIFN0cmluZ0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAsMTMg
KzM5MCwxNyBAQAogICAgIFVDaGFyIG9yZWQgPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2xlbmd0aDsgaSsrKSB7CiAgICAgICAgIFVDaGFyIGMgPSBtX2RhdGFbaV07Ci0gICAg
ICAgIGFsbExvd2VyICY9IGlzbG93ZXIoYyk7CisgICAgICAgIC8vIGlzbG93ZXIgaXMgb25seSBn
dWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGFuZCAKKyAgICAgICAgLy8gbG9jYWxlLWluZGVw
ZW5kZW50bHkgZm9yIEFTQ0lJIGNoYXJhY3RlcnMKKyAgICAgICAgYWxsTG93ZXIgJj0gaXNsb3dl
cihjICYgMHg3Rik7CiAgICAgICAgIG9yZWQgfD0gYzsKICAgICB9CiAgICAgaWYgKCEob3JlZCAm
IH4weDdGKSkKICAgICAgICAgcmV0dXJuIGFsbExvd2VyOwogCiAgICAgLy8gRG8gYSBzbG93ZXIg
Y2hlY2sgZm9yIHRoZSBvdGhlciBjYXNlcy4KKyAgICAvLyBGSVhNRSA6IHN0aWxsIGJyb2tlbiBm
b3Igbm9uLUJNUCBjaGFyYWN0ZXJzIAorICAgIC8vIChlLmcuIERlc2VyZXQgYW5kIE1hdGhlbWF0
aWNhbCBhbHBoYW51bWVyaWMgc3ltYm9scykKICAgICBib29sIGFsbExvd2VyMiA9IHRydWU7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspCiAgICAgICAgIGFsbExv
d2VyMiAmPSBVbmljb2RlOjppc0xvd2VyKG1fZGF0YVtpXSk7CkBAIC00MjAsNyArNDI0LDEwIEBA
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBVQ2hhciBj
ID0gbV9kYXRhW2ldOwogICAgICAgICBvcmVkIHw9IGM7Ci0gICAgICAgIGRhdGFbaV0gPSB0b2xv
d2VyKGMpOworICAgICAgICAvLyB0b2xvd2VyIGlzIG9ubHkgZ3VhcmFudGVlZCB0byB3b3JrIGNv
cnJlY3RseSBhbmQgCisgICAgICAgIC8vIGxvY2FsZS1pbmRlcGVuZGVudGx5IGZvciBBU0NJSSBj
aGFyYWN0ZXJzLiBpZiBpdCdzIG5vdCBhbGwgQVNDSUksCisgICAgICAgIC8vIHdlJ2xsIHRocm93
IGF3YXkgdGhlIHJlc3VsdCBhZnRlciB0aGlzIGxvb3AuIAorICAgICAgICBkYXRhW2ldID0gdG9s
b3dlcihjICYgMHg3Rik7CiAgICAgfQogICAgIGlmICghKG9yZWQgJiB+MHg3RikpCiAgICAgICAg
IHJldHVybiBjOwpAQCAtMTAzNiw3ICsxMDQzLDEwIEBACiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIFVDaGFyIGFjID0gYXNbaV07CiAgICAgICAgIG9yZWQgfD0gYWM7Ci0gICAg
ICAgIGVxdWFsICY9IHRvbG93ZXIoYWMpID09IHRvbG93ZXIoYmMpOworICAgICAgICAvLyB0b2xv
d2VyIGlzIG9ubHkgZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBhbmQgCisgICAgICAgIC8v
IGxvY2FsZS1pbmRlcGVuZGVudGx5IGZvciBBU0NJSSBjaGFyYWN0ZXJzLiBpZiBpdCdzIG5vdCBh
bGwgQVNDSUksCisgICAgICAgIC8vIHdlJ2xsIHRha2UgYSBzbG93IGJ1dCBjb3JyZWN0IHBhdGgg
YWZ0ZXIgdGhlIGxvb3AuCisgICAgICAgIGVxdWFsICY9IHRvbG93ZXIoYWMgJiAweDdGKSA9PSB0
b2xvd2VyKGJjKTsKICAgICB9CiAKICAgICBpZiAob3JlZCAmIH4weDdGKSB7Cg==
</data>
<flag name="review"
          id="5516"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13846</attachid>
            <date>2007-03-28 11:07:40 -0700</date>
            <delta_ts>2007-03-28 11:26:49 -0700</delta_ts>
            <desc>patch with changelog entry</desc>
            <filename>13138.patch.3a</filename>
            <type>text/plain</type>
            <size>2401</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDU1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDctMDMtMjggSnVuZ3NoaWsgU2hpbiA8anVuZ3NoaWsuc2hpbkBn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4KKworICAgICAgICBHZXQgcmlk
IG9mIG1pc3VzZXMgb2YgfGlzbG93ZXJ8IGFuZCB8dG9sb3dlcnwgZm9yIG5vbi1BU0NJSSAKKyAg
ICAgICAgY2hhcmFjdGVycy4KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMxMzgKKworICAgICAgICAqIHBsYXRmb3JtL1N0cmluZ0ltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6aXNMb3dlcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHJpbmdJbXBsOjpsb3dlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdJbXBsOjplcXVhbEln
bm9yaW5nQ2FzZSk6CisKIDIwMDctMDMtMjggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBycz1IeWF0dC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU3RyaW5nSW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TdHJpbmdJbXBsLmNwcAkocmV2
aXNpb24gMjA1NTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1N0cmluZ0ltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTAsMTMgKzM5MCwxNyBAQAogICAgIFVDaGFyIG9yZWQgPSAwOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xlbmd0aDsgaSsrKSB7CiAgICAgICAgIFVDaGFyIGMg
PSBtX2RhdGFbaV07Ci0gICAgICAgIGFsbExvd2VyICY9IGlzbG93ZXIoYyk7CisgICAgICAgIC8v
IGlzbG93ZXIgaXMgb25seSBndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGFuZCAKKyAgICAg
ICAgLy8gbG9jYWxlLWluZGVwZW5kZW50bHkgZm9yIEFTQ0lJIGNoYXJhY3RlcnMKKyAgICAgICAg
YWxsTG93ZXIgJj0gaXNsb3dlcihjICYgMHg3Rik7CiAgICAgICAgIG9yZWQgfD0gYzsKICAgICB9
CiAgICAgaWYgKCEob3JlZCAmIH4weDdGKSkKICAgICAgICAgcmV0dXJuIGFsbExvd2VyOwogCiAg
ICAgLy8gRG8gYSBzbG93ZXIgY2hlY2sgZm9yIHRoZSBvdGhlciBjYXNlcy4KKyAgICAvLyBGSVhN
RSA6IHN0aWxsIGJyb2tlbiBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIAorICAgIC8vIChlLmcuIERl
c2VyZXQgYW5kIE1hdGhlbWF0aWNhbCBhbHBoYW51bWVyaWMgc3ltYm9scykKICAgICBib29sIGFs
bExvd2VyMiA9IHRydWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGVuZ3RoOyBp
KyspCiAgICAgICAgIGFsbExvd2VyMiAmPSBVbmljb2RlOjppc0xvd2VyKG1fZGF0YVtpXSk7CkBA
IC00MjAsNyArNDI0LDEwIEBACiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewogICAgICAgICBVQ2hhciBjID0gbV9kYXRhW2ldOwogICAgICAgICBvcmVkIHw9IGM7Ci0gICAg
ICAgIGRhdGFbaV0gPSB0b2xvd2VyKGMpOworICAgICAgICAvLyB0b2xvd2VyIGlzIG9ubHkgZ3Vh
cmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBhbmQgCisgICAgICAgIC8vIGxvY2FsZS1pbmRlcGVu
ZGVudGx5IGZvciBBU0NJSSBjaGFyYWN0ZXJzLiBpZiBpdCdzIG5vdCBhbGwgQVNDSUksCisgICAg
ICAgIC8vIHdlJ2xsIHRocm93IGF3YXkgdGhlIHJlc3VsdCBhZnRlciB0aGlzIGxvb3AuIAorICAg
ICAgICBkYXRhW2ldID0gdG9sb3dlcihjICYgMHg3Rik7CiAgICAgfQogICAgIGlmICghKG9yZWQg
JiB+MHg3RikpCiAgICAgICAgIHJldHVybiBjOwpAQCAtMTAzNiw3ICsxMDQzLDEwIEBACiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFVDaGFyIGFjID0gYXNbaV07CiAgICAgICAg
IG9yZWQgfD0gYWM7Ci0gICAgICAgIGVxdWFsICY9IHRvbG93ZXIoYWMpID09IHRvbG93ZXIoYmMp
OworICAgICAgICAvLyB0b2xvd2VyIGlzIG9ubHkgZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3Rs
eSBhbmQgCisgICAgICAgIC8vIGxvY2FsZS1pbmRlcGVuZGVudGx5IGZvciBBU0NJSSBjaGFyYWN0
ZXJzLiBpZiBpdCdzIG5vdCBhbGwgQVNDSUksCisgICAgICAgIC8vIHdlJ2xsIHRha2UgYSBzbG93
IGJ1dCBjb3JyZWN0IHBhdGggYWZ0ZXIgdGhlIGxvb3AuCisgICAgICAgIGVxdWFsICY9IHRvbG93
ZXIoYWMgJiAweDdGKSA9PSB0b2xvd2VyKGJjKTsKICAgICB9CiAKICAgICBpZiAob3JlZCAmIH4w
eDdGKSB7Cg==
</data>
<flag name="review"
          id="5540"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>