[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Failed test-localename 64-bit OS X 10.6.2
From: |
Bruno Haible |
Subject: |
Re: Failed test-localename 64-bit OS X 10.6.2 |
Date: |
Sat, 3 Apr 2010 09:48:42 +0100 |
User-agent: |
KMail/1.9.9 |
Hello,
Panu Kekäläinen wrote, in reply to
<http://lists.gnu.org/archive/html/bug-libunistring/2010-04/msg00001.html>:
> After applying the patch the test results are:
> ====================
> All 320 tests passed
> ====================
>
> Thank you for the fast response!
Thanks to you! I very much appreciate your fast response. I will make a new
libunistring release today, with this fix included.
Bruno
2010-04-03 Bruno Haible <address@hidden>
localename: Port to MacOS X 10.6.
* lib/localename.c (gl_locale_name_thread_unsafe): On MacOS X, try the
memory layout of the locales in MacOS X 10.6 as well.
Reported by Panu Kekäläinen <address@hidden>.
--- lib/localename.c.orig Sat Apr 3 10:43:18 2010
+++ lib/localename.c Fri Apr 2 20:14:59 2010
@@ -2625,12 +2625,24 @@
locale names of length > 31, we can assume that it is NUL terminated
in this buffer. But we need to make a copy of the locale name, of
indefinite extent. */
- struct _xlocale
+ struct _xlocale_part1_v0 /* used in MacOS X 10.5 */
{
int32_t __refcount;
void (*__free_extra)(void *);
__darwin_mbstate_t __mbs[10];
int64_t __magic;
+ };
+ struct _xlocale_part1_v1 /* used in MacOS X >= 10.6.0 */
+ {
+ int32_t __refcount;
+ void (*__free_extra)(void *);
+ __darwin_mbstate_t __mbs[10];
+ /*pthread_lock_t*/ int __lock;
+ int64_t __magic;
+ };
+ struct _xlocale_part2
+ {
+ int64_t __magic;
unsigned char __collate_load_error;
unsigned char __collate_substitute_nontrivial;
unsigned char _messages_using_locale;
@@ -2689,7 +2701,23 @@
char *_time_locale_buf;
/* more */
};
- struct _xlocale *tlp = (struct _xlocale *) thread_locale;
+ struct _xlocale_part2 *tlp;
+ if (((struct _xlocale_part1_v0 *) thread_locale)->__magic
+ == 0x786C6F63616C6530LL)
+ /* MacOS X 10.5 */
+ tlp =
+ (struct _xlocale_part2 *)
+ &((struct _xlocale_part1_v0 *) thread_locale)->__magic;
+ else if (((struct _xlocale_part1_v1 *) thread_locale)->__magic
+ == 0x786C6F63616C6530LL)
+ /* MacOS X >= 10.6.0 */
+ tlp =
+ (struct _xlocale_part2 *)
+ &((struct _xlocale_part1_v1 *) thread_locale)->__magic;
+ else
+ /* Unsupported version of MacOS X: The internals of 'struct _xlocale'
+ have changed again. */
+ return "";
switch (category)
{
case LC_CTYPE:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: Failed test-localename 64-bit OS X 10.6.2,
Bruno Haible <=