stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicole Willson <will...@roguewave.com>
Subject Problem with num_put on zOS
Date Wed, 01 Mar 2006 00:33:31 GMT
Martin,
I'm trying to debug an issue with num_put where it fails an ASSERT in
building a custom locale.  We are using numpunct as the facet type.  I'm
having trouble determining exactly where it is going wrong.  

I've traced it to when it comes out of include/loc/_locale.h: inline const
__rw_facet*
__rw_get_facet (const _STD::locale &__loc, const _STD::numpunct<char>*)

Inside this function the facet._C_pid is 8 (well pointing to it)
Back in 
template <class _Facet>
inline locale::locale (const locale &__rhs, _Facet *__facet) : _C_body(0)

after 
if (_RW::__rw_get_facet (__rhs, (_Facet*)0) == __facet)
__facet._C_pid is now nicely populated in a working system, but has reverted
to 0 on the zOS system.  I don't see where __facet is even messed with in
this if statement.  Just magically has the right _C_pid after the
__rw_get_facet.  And just as magically has the wrong _C_pid (0) after the
__rw_get_facet on the zOS system.

Any ideas where I should be looking?  Why does this if statement set the
_C_pid for __facet on a working system?  Or more appropriately, I should
ask, How?

Thanks

Nicole Willson
Consulting Engineer
Rogue Wave Software, Inc.
A Division of Quovadx
303-545-3210



Mime
View raw message