cc'ing since both lists should be included.

The m32c has 24-bit pointers and 16-bit size_t. This changes
pushing a pointer through a size_t to pushing it through a
uintptr_t.

--joel
On 11/10/2014 9:36 AM, Joel Sherrill wrote:
> 2014-11-10  Joel Sherrill <joel.sherr...@oarcorp.com>
>
>       * src/c++98/mt_allocator.cc: Fix assumption that sizeof(void *) is
>       equal to sizeof(size_t). The m32c breaks this assumption.
> ---
>  libstdc++-v3/src/c++98/mt_allocator.cc | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/libstdc++-v3/src/c++98/mt_allocator.cc 
> b/libstdc++-v3/src/c++98/mt_allocator.cc
> index 38e17df..04dd8ad 100644
> --- a/libstdc++-v3/src/c++98/mt_allocator.cc
> +++ b/libstdc++-v3/src/c++98/mt_allocator.cc
> @@ -30,6 +30,7 @@
>  #include <ext/concurrence.h>
>  #include <ext/mt_allocator.h>
>  #include <cstring>
> +#include <stdint.h>
>  
>  namespace
>  {
> @@ -74,7 +75,7 @@ namespace
>      __freelist& freelist = get_freelist();
>      {
>        __gnu_cxx::__scoped_lock sentry(get_freelist_mutex());
> -      size_t _M_id = reinterpret_cast<size_t>(__id);
> +      uintptr_t _M_id = reinterpret_cast<uintptr_t>(__id);
>        
>        typedef __gnu_cxx::__pool<true>::_Thread_record _Thread_record;
>        _Thread_record* __tr = &freelist._M_thread_freelist_array[_M_id - 1];
> @@ -627,7 +628,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>        {
>       __freelist& freelist = get_freelist();
>       void* v = __gthread_getspecific(freelist._M_key);
> -     size_t _M_id = (size_t)v;
> +     uintptr_t _M_id = (uintptr_t)v;
>       if (_M_id == 0)
>         {
>           {

-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel.sherr...@oarcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985

Reply via email to