components/stdcxx/patches/041-messages.cpp.patch
changeset 402 94ae4d75524c
equal deleted inserted replaced
401:bf52ef48020c 402:94ae4d75524c
       
     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;