WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 28441
icu42
build error with ICU 4.2.x on Windows + Visual studio
https://bugs.webkit.org/show_bug.cgi?id=28441
Summary
build error with ICU 4.2.x on Windows + Visual studio
Jungshik Shin
Reported
2009-08-18 17:15:01 PDT
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'm getting it in wtf/unicode/icu/CollatorICU.cpp. He fixed the problem by using Vector<char> instead of std::string. (
http://trac.webkit.org/changeset/44643
). In this case, I'm afraid that's not an option because unicode/ucol.h pulls in unicode/unistr.h, which in turn pulls in unicode/std_string.h and <string>. On Windows, <string> pulls in <xlocale> with tolower, toupper, etc. They'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 "_foo" to WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h for 'foo' #defined in DisallowCType.h So, they'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
Attachments
patch : prepend WTF_...ASCIIType_h with 'isXXX' / 'toXXX'
(3.98 KB, patch)
2009-08-19 10:02 PDT
,
Jungshik Shin
darin
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Jungshik Shin
Comment 1
2009-08-18 17:19:36 PDT
Oops. I forgot to mention that ICU 4.2.x began to use std::string where it's supported. Chromium has used ICU 3.8 and I'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'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'll make a patch.
Jungshik Shin
Comment 2
2009-08-19 10:02:24 PDT
Created
attachment 35126
[details]
patch : prepend WTF_...ASCIIType_h with 'isXXX' / 'toXXX'
Eric Seidel (no email)
Comment 3
2009-08-19 10:40:38 PDT
I'm totally confused by this fix. Why?
Jungshik Shin
Comment 4
2009-08-19 10:55:58 PDT
Let me try to clarify. CollatorICU.cpp (in Javascript/wtf/unicode/icu) includes ICU's i18n/unicode/ucol.h. Beginning with ICU 4.2, ucol.h pulls in C++ standard <string> (not directly but via a chain of includes). <string> in turn pulls in <xlocale> (again indirectly). <xlocale> 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 <xlocale> (in "Microsoft Visual Studio 8\VC\include") so that there are multiple errors as shown in
http://paste.lisp.org/display/81781
Jungshik Shin
Comment 5
2009-08-19 10:57:55 PDT
(In reply to
comment #4
)
> At line 1375, it has > > _Elem __CLR_OR_THIS_CALL tolower(_Elem _Ch) const > { // convert element to upper case > return (do_toupper(_Ch)); > }
Ooops. The above should read _Elem __CLR_OR_THIS_CALL tolower(_Elem _Ch) const { // convert element to lower case return (do_tolower(_Ch)); }
Darin Adler
Comment 6
2009-08-19 11:13:04 PDT
Comment on
attachment 35126
[details]
patch : prepend WTF_...ASCIIType_h with 'isXXX' / 'toXXX' This seems like an OK way to sidestep the build failure. Not a great solution, but something that will do no harm. r=me
Jungshik Shin
Comment 7
2009-08-19 11:39:25 PDT
Thank you for r+. Just checked in (
http://trac.webkit.org/changeset/47516
)
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug