<?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>28441</bug_id>
          <alias>icu42</alias>
          <creation_ts>2009-08-18 17:15:01 -0700</creation_ts>
          <short_desc>build error with ICU 4.2.x on Windows + Visual studio</short_desc>
          <delta_ts>2009-08-19 11:39:25 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</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="Jungshik Shin">jshin</assigned_to>
          <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>mrowe</cc>
    
    <cc>pkasting</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>141329</commentid>
    <comment_count>0</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-08-18 17:15:01 -0700</bug_when>
    <thetext>When I tried to build Chromium with ICU 4.2.x on Windows, I came across exactly the same error as Peter encountered a couple of month ago ( http://paste.lisp.org/display/81781 ) except that I&apos;m getting it in wtf/unicode/icu/CollatorICU.cpp. 

He fixed the problem by  using Vector&lt;char&gt; instead of std::string.  ( http://trac.webkit.org/changeset/44643 ). 

In this case, I&apos;m afraid that&apos;s not an option because unicode/ucol.h pulls in unicode/unistr.h, which in turn pulls in unicode/std_string.h and &lt;string&gt;. On Windows, &lt;string&gt; pulls in &lt;xlocale&gt; with tolower, toupper, etc. They&apos;re all replaced with WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h leading to compile errors (multiple declarations).

One work around the problem is to append &quot;_foo&quot; to WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h for &apos;foo&apos; #defined in DisallowCType.h

So, they&apos;ll look like:

#define tolower WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h_tolower
#define toupper WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h_toupper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141332</commentid>
    <comment_count>1</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-08-18 17:19:36 -0700</bug_when>
    <thetext>Oops. I forgot to mention that ICU 4.2.x began to use std::string where it&apos;s supported. Chromium has  used ICU 3.8 and I&apos;m about to upgrade it to ICU 4.2.1. I guess Safari will eventually move to ICU 4.2.x or later (Win Safari uses ICU 4.0, right?) even on OS X (it&apos;s almost certain that Mac OS 10.7 - after snow leopard - will have at least ICU 4.2.x). 

If the approach mentioned in the previous comment is acceptable, I&apos;ll make a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141504</commentid>
    <comment_count>2</comment_count>
      <attachid>35126</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-08-19 10:02:24 -0700</bug_when>
    <thetext>Created attachment 35126
patch : prepend WTF_...ASCIIType_h with &apos;isXXX&apos; / &apos;toXXX&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141523</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-19 10:40:38 -0700</bug_when>
    <thetext>I&apos;m totally confused by this fix.  Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141531</commentid>
    <comment_count>4</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-08-19 10:55:58 -0700</bug_when>
    <thetext>Let me try to clarify. 

CollatorICU.cpp (in Javascript/wtf/unicode/icu) includes ICU&apos;s i18n/unicode/ucol.h. Beginning with ICU 4.2, ucol.h pulls in  C++ standard &lt;string&gt; (not directly but via a chain of includes). 

&lt;string&gt; in turn pulls in &lt;xlocale&gt; (again indirectly). &lt;xlocale&gt; in Visual Studio has the following at line 1386

        _Elem __CLR_OR_THIS_CALL toupper(_Elem _Ch) const
                {       // convert element to upper case
                return (do_toupper(_Ch));
                }

At line 1375, it has 

        _Elem __CLR_OR_THIS_CALL tolower(_Elem _Ch) const
                {       // convert element to upper case
                return (do_toupper(_Ch));
                }


Because DisallowCType.h defines tolower and toupper (and other ctype macros/functions) to WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h, the  above two end up being identical and leading to the errors in http://paste.lisp.org/display/81781  

toupper and tolower show up multiple times in 
&lt;xlocale&gt; (in &quot;Microsoft Visual Studio 8\VC\include&quot;) so that there are multiple errors as shown in http://paste.lisp.org/display/81781</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141534</commentid>
    <comment_count>5</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-08-19 10:57:55 -0700</bug_when>
    <thetext>(In reply to comment #4)

&gt; At line 1375, it has 
&gt; 
&gt;         _Elem __CLR_OR_THIS_CALL tolower(_Elem _Ch) const
&gt;                 {       // convert element to upper case
&gt;                 return (do_toupper(_Ch));
&gt;                 }

Ooops. The above should read

        _Elem __CLR_OR_THIS_CALL tolower(_Elem _Ch) const
                {       // convert element to lower case
                return (do_tolower(_Ch));
                }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141537</commentid>
    <comment_count>6</comment_count>
      <attachid>35126</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-19 11:13:04 -0700</bug_when>
    <thetext>Comment on attachment 35126
patch : prepend WTF_...ASCIIType_h with &apos;isXXX&apos; / &apos;toXXX&apos;

This seems like an OK way to sidestep the build failure. Not a great solution, but something that will do no harm.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141540</commentid>
    <comment_count>7</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-08-19 11:39:25 -0700</bug_when>
    <thetext>Thank you for r+. Just checked in ( http://trac.webkit.org/changeset/47516 )</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35126</attachid>
            <date>2009-08-19 10:02:24 -0700</date>
            <delta_ts>2009-08-19 11:13:04 -0700</delta_ts>
            <desc>patch : prepend WTF_...ASCIIType_h with &apos;isXXX&apos; / &apos;toXXX&apos;</desc>
            <filename>28441.patch</filename>
            <type>text/plain</type>
            <size>4074</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ3NTA2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDgtMTkgIEp1bmdzaGlr
IFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjg0NDEKKworICAgICAgICBGaXggYSBidWlsZCBpc3N1ZSB3aXRoIElDVSA0LjIgb3IgbGF0
ZXIgb24gV2luZG93cyB3aXRoIFZpc3VhbCBDKysuIAorICAgICAgICBJbnN0ZWFkIG9mIGRlZmlu
aW5nIGFsbCBpc1hYWCBhbmQgdG91cHBlci90b2xvd2VyIGFzIAorICAgICAgICAgIFdURl9QbGVh
c2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNU
eXBlX2gsCisgICAgICAgICNkZWZpbmUgdGhlbSB0byBiZSBkaWZmZXJlbnQgYnkgcHJlcGVuZGlu
ZyAnV1RGXy4uLkFTQ0lJVHlwZV9oJyB3aXRoCisgICAgICAgIHRoZSBvcmlnaW5pYWwgbmFtZXMg
bGlrZSAndG91cHBlcl9XVEZfLi4uQVNDSUlUeXBlX2gnLiAKKworICAgICAgICAqIHd0Zi9EaXNh
bGxvd0NUeXBlLmg6CisKIDIwMDktMDgtMTggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9EaXNhbGxvd0NUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL0Rpc2FsbG93Q1R5cGUuaAkocmV2aXNpb24gNDc1MDMpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvRGlzYWxsb3dDVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwyMSArNTQsMjEgQEAK
ICN1bmRlZiB0b2xvd2VyCiAjdW5kZWYgdG91cHBlcgogCi0jZGVmaW5lIGlzYWxudW0gV1RGX1Bs
ZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJ
Q1R5cGVfaAotI2RlZmluZSBpc2FscGhhIFdURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVh
ZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKLSNkZWZpbmUgaXNhc2NpaSBX
VEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5f
QVNDSUlDVHlwZV9oCi0jZGVmaW5lIGlzYmxhbmsgV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9p
bnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVfaAotI2RlZmluZSBpc2Nu
dHJsIFdURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVu
dF9pbl9BU0NJSUNUeXBlX2gKLSNkZWZpbmUgaXNkaWdpdCBXVEZfUGxlYXNlX3VzZV9BU0NJSUNU
eXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oCi0jZGVmaW5l
IGlzZ3JhcGggV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9j
b21tZW50X2luX0FTQ0lJQ1R5cGVfaAotI2RlZmluZSBpc2xvd2VyIFdURl9QbGVhc2VfdXNlX0FT
Q0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKLSNk
ZWZpbmUgaXNwcmludCBXVEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVf
c2VlX2NvbW1lbnRfaW5fQVNDSUlDVHlwZV9oCi0jZGVmaW5lIGlzcHVuY3QgV1RGX1BsZWFzZV91
c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVf
aAotI2RlZmluZSBpc3NwYWNlIFdURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9j
dHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKLSNkZWZpbmUgaXN1cHBlciBXVEZfUGxl
YXNlX3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5fQVNDSUlD
VHlwZV9oCi0jZGVmaW5lIGlzeGRpZ2l0IFdURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVh
ZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKLSNkZWZpbmUgdG9hc2NpaSBX
VEZfUGxlYXNlX3VzZV9BU0NJSUNUeXBlX2luc3RlYWRfb2ZfY3R5cGVfc2VlX2NvbW1lbnRfaW5f
QVNDSUlDVHlwZV9oCi0jZGVmaW5lIHRvbG93ZXIgV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9p
bnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVfaAotI2RlZmluZSB0b3Vw
cGVyIFdURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVu
dF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUgaXNhbG51bSBpc2FsbnVtX1dURl9QbGVhc2VfdXNl
X0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gK
KyNkZWZpbmUgaXNhbHBoYSBpc2FscGhhX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVh
ZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUgaXNhc2NpaSBp
c2FzY2lpX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29t
bWVudF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUgaXNibGFuayBpc2JsYW5rX1dURl9QbGVhc2Vf
dXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBl
X2gKKyNkZWZpbmUgaXNjbnRybCBpc2NudHJsX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5z
dGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUgaXNkaWdp
dCBpc2RpZ2l0X1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVf
Y29tbWVudF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUgaXNncmFwaCBpc2dyYXBoX1dURl9QbGVh
c2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNU
eXBlX2gKKyNkZWZpbmUgaXNsb3dlciBpc2xvd2VyX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVf
aW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUgaXNw
cmludCBpc3ByaW50X1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9z
ZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUgaXNwdW5jdCBpc3B1bmN0X1dURl9Q
bGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJ
SUNUeXBlX2gKKyNkZWZpbmUgaXNzcGFjZSBpc3NwYWNlX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5
cGVfaW5zdGVhZF9vZl9jdHlwZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUg
aXN1cHBlciBpc3VwcGVyX1dURl9QbGVhc2VfdXNlX0FTQ0lJQ1R5cGVfaW5zdGVhZF9vZl9jdHlw
ZV9zZWVfY29tbWVudF9pbl9BU0NJSUNUeXBlX2gKKyNkZWZpbmUgaXN4ZGlnaXQgaXN4ZGlnaXRf
V1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2lu
X0FTQ0lJQ1R5cGVfaAorI2RlZmluZSB0b2FzY2lpIHRvYXNjaWlfV1RGX1BsZWFzZV91c2VfQVND
SUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVfaAorI2Rl
ZmluZSB0b2xvd2VyIHRvbG93ZXJfV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29m
X2N0eXBlX3NlZV9jb21tZW50X2luX0FTQ0lJQ1R5cGVfaAorI2RlZmluZSB0b3VwcGVyIHRvdXBw
ZXJfV1RGX1BsZWFzZV91c2VfQVNDSUlDVHlwZV9pbnN0ZWFkX29mX2N0eXBlX3NlZV9jb21tZW50
X2luX0FTQ0lJQ1R5cGVfaAogCiAjZW5kaWYK
</data>
<flag name="review"
          id="19319"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>