equal
deleted
inserted
replaced
|
1 --- stdcxx-4.2.1/src/messages.cpp 2008-04-24 17:25:19.000000000 -0700 |
|
2 +++ stdcxx-4.2.1/src/messages.cpp 2009-08-17 09:22:12.657383990 -0700 |
|
3 @@ -51,6 +51,10 @@ |
|
4 |
|
5 _RWSTD_NAMESPACE (__rw) { |
|
6 |
|
7 +#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT) |
|
8 +# pragma pack(8) |
|
9 +# pragma align 8(__rw_open_cat_data) |
|
10 +#endif |
|
11 |
|
12 // Implementation structure private to this module -- __rw_open_cat_data. |
|
13 // Keeps track of the association between an open message catalog (as |
|
14 @@ -65,11 +69,19 @@ |
|
15 { |
|
16 nl_catd catd; |
|
17 union { |
|
18 +#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT) |
|
19 + unsigned long long _C_align; // force alignment |
|
20 + unsigned char _C_data [sizeof (_STD::locale)]; |
|
21 +#else |
|
22 void *_C_align; |
|
23 char _C_data [sizeof (_STD::locale)]; |
|
24 +#endif |
|
25 } loc; |
|
26 }; |
|
27 |
|
28 +#if defined(_RWSTD_STRICT_SPARCV8_MUTEX_ALIGNMENT) |
|
29 +# pragma pack(0) |
|
30 +#endif |
|
31 |
|
32 // manages a global, per-process repository of open catalogs according |
|
33 // to the following table: |
|
34 @@ -288,7 +300,7 @@ |
|
35 // 22.2.7.1.2, p5: `catalog' must be valid |
|
36 if (pcat_data && pcat_data->catd != _RWSTD_BAD_CATD) { |
|
37 |
|
38 - catclose (pcat_data->catd); |
|
39 + int ret = catclose (pcat_data->catd); |
|
40 |
|
41 _STD::locale* const ploc = |
|
42 _RWSTD_REINTERPRET_CAST (_STD::locale*, &pcat_data->loc); |
|
43 @@ -297,7 +309,7 @@ |
|
44 |
|
45 __rw_manage_cat_data (cat, pcat_data); |
|
46 |
|
47 - cat_closed = true; |
|
48 + cat_closed = ret == 0; |
|
49 } |
|
50 else { |
|
51 cat_closed = false; |