On Thu, May 24, 2012 at 11:01 PM, Daniel Veillard wrote:
> On Wed, May 23, 2012 at 05:41:35PM +0800, Daniel Veillard wrote:
>>   C.f. the bug Fix windows unicode build
>>   https://bugzilla.gnome.org/show_bug.cgi?id=638650
>>
>> and the previous discussions here:
>>
>>   http://mail.gnome.org/archives/xml/2008-February/msg00094.html
>>
>> now that the release is done, can we have a final decision on this.
>> As I understand it, LoadLibraryW takes a wchar_t* parameter, while
>> internally we are using only a char * (or xmlChar *) so it makes
>> no sense to try to call LoadLibraryW, and instead of using the
>> macro LoadLibrary which can only break build, calling LoadLibraryA
>> seems to be the simplest.
>> But I'm not a Windows user, and know close to nothing to the platform
>> so I suggest we reopen that debate, or just agree on fixing this.
>
>  Okay after the discussions (thanks everybody !) it seems we have
> two choices:
>
>  1/ change the xmlmodule.h API to use xmlChar * (and hence assume UTF-8
>    strings), then convert to 16bit encoding and pass that to the W
>    functions on Windows.
>  2/ keep the xmlmodule.h, assume and document that those entry points
>    accept only ASCII names and use the A functions on Windows.
>
> In any case using LoadLibrary is just broken :-)
>
>  I'm strongly weigting on 2/ myself for the following reasons:
> - library names and entry points are usually ascii to avoid a whole
>  set of problems
> - on the Linux/Unix side the function dlopen and dlsym will be using
>  user's locale and libxml2 cannot and should not make any assumption
>  about those settings, so the only safe assumption is that those will
>  work with ASCII and we can't guarantee behaviour outside of it.
>
> So I am tempted to take the patches using the A versions of the Windows
> entry point but mainly document xmlModuleOpen and xmlModuleSymbol that
> use of character in the given strings outside of ASCII will have
> undefined behaviour (optionally we could add the check in the entry
> points). That way the API is coherent across platforms, and we
> don't change the API/ABI just clarify limitation of use.
>
>  Any strong dissent on doing the above :-) ?

Thanks for the summary.  I don't have any dissent but want to suggest
that you may want to consider what Cygwin is doing for this.  They
deal with LoadLibrary issues on a near daily basis.  Here is where
they implement dlopen, dlsym, etc,
http://cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/dlfcn.cc?rev=1.53&content-type=text/x-cvsweb-markup&cvsroot=src
and you'll notice that they use the W versions of functions.  I know
they had a large focus on internationalized strings and how to handle
them properly.

-- 
Earnie
-- https://sites.google.com/site/earnieboyd
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to