This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] c++98/mt_allcoator.cc: Fix assumption sizeof(void *) == sizeof(size_t)


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.sherrill@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.sherrill@OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]