[ 
https://issues.apache.org/jira/browse/STDCXX-843?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Martin Sebor resolved STDCXX-843.
---------------------------------

    Resolution: Fixed

Fix committed in [r646133|http://svn.apache.org/viewvc?rev=646133&view=rev].
Need to put together a regression test.
Will close after the fix along with the regression test have been integrated 
into 4.2.x in the next bulk merge.

> [Sun C++] sizeof(mbstate_t) depends on #include order
> -----------------------------------------------------
>
>                 Key: STDCXX-843
>                 URL: https://issues.apache.org/jira/browse/STDCXX-843
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: 21. Strings
>    Affects Versions: 4.2.0
>         Environment: Sun C++
>            Reporter: Martin Sebor
>            Assignee: Martin Sebor
>            Priority: Blocker
>             Fix For: 4.2.1
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> The size of the {{mbstate_t}} type and its aliiases (such as 
> {{std::istream::traits_type::state_type)}}) appears to depend on the order in 
> which stdcxx headers are #included:
> {noformat}
> $ cat u.cpp && gmake u.o && mv u.o v.o && gmake CPPOPTS=-DMAIN u LDOPTS=v.o 
> && ./u
> #ifdef MAIN
> #  include <iomanip>
> #  include <istream>
> void mbstate_size (size_t);
> int main ()
> {
>     mbstate_size (sizeof (std::istream::traits_type::state_type));
> }
> #else
> #  include <assert.h>
> #  include <wchar.h>
> #  include <stdio.h>
> void mbstate_size (size_t n)
> {
>     const size_t size = sizeof (mbstate_t);
>     printf ("%zu == %zu\n", n, size);
>     fflush (stdout);
>     assert (n == size);
> }
> #endif
> CC -c -D_RWSTDDEBUG   -mt -I/amd/devco/sebor/stdcxx/include 
> -I/build/sebor/stdcxx-suncc-5.9-j1-15D/include 
> -I/amd/devco/sebor/stdcxx/tests/include  -library=%none -g  -m64 +w -errtags 
> -erroff=hidef   u.cpp
> CC -c -D_RWSTDDEBUG   -mt -I/amd/devco/sebor/stdcxx/include 
> -I/build/sebor/stdcxx-suncc-5.9-j1-15D/include 
> -I/amd/devco/sebor/stdcxx/tests/include -DMAIN -library=%none -g  -m64 +w 
> -errtags -erroff=hidef   u.cpp
> CC u.o -o u -L/build/sebor/stdcxx-suncc-5.9-j1-15D/rwtest -lrwtest15D 
> -library=%none  -mt  -m64 -L/build/sebor/stdcxx-suncc-5.9-j1-15D/lib v.o 
> -R/build/sebor/stdcxx-suncc-5.9-j1-15D/lib:/build/sebor/stdcxx-suncc-5.9-j1-15D/rwtest
>  -lstd15D  -lm 
> 24 == 32
> Assertion failed: n == size, file u.cpp, line 24
> Abort (core dumped)
> {noformat}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to