This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC 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: libstdc++/7461: ctype<char>::classic_table() returns offset array on cygwin


On Thu, Aug 01, 2002 at 04:31:43PM -0600, Rick Danos wrote:
>Sorry - I believe that now that the offset is being taken into account in
>the return from classic_table(), it is *no longer* necessary to also have
>the offsets in the ctype_inline.h functions that reference the mask array.
>In other words, I don't believe it is necessary to use (_M_table + 1) in the
>ctype_inline.h functions, but you should now just use _M_table.
>
>I appreciate the rapid addressing of this issue, and your and the entire
>team's work on this product is amazing.

So, should this patch be reverted?  If not, has it been checked into the
3.2 branch?  I don't see it...

cgf

>----- Original Message -----
>From: <bkoz@gcc.gnu.org>
>To: <bkoz@gcc.gnu.org>; <gcc-bugs@gcc.gnu.org>; <gcc-prs@gcc.gnu.org>;
><nobody@gcc.gnu.org>; <rdanos@hotmail.com>
>Sent: Thursday, August 01, 2002 3:39 PM
>Subject: Re: libstdc++/7461: ctype<char>::classic_table() returns offset
>array on Cygwin
>
>
>> Synopsis: ctype<char>::classic_table() returns offset array on Cygwin
>>
>> Responsible-Changed-From-To: unassigned->bkoz
>> Responsible-Changed-By: bkoz
>> Responsible-Changed-When: Thu Aug  1 14:39:18 2002
>> Responsible-Changed-Why:
>>     Mine.
>> State-Changed-From-To: open->feedback
>> State-Changed-By: bkoz
>> State-Changed-When: Thu Aug  1 14:39:18 2002
>> State-Changed-Why:
>>     Fixed.
>>
>>     2002-08-01  Rick Danos  <rdanos@hotmail.com>
>>
>>     PR libstdc++/7461
>>     * config/os/newlib/ctype_noninline.h (classic_table): Add offset.
>>     * config/os/newlib/ctype_inline.h (is): Use static_cast.
>>
>>     Index: config/os/newlib/ctype_inline.h
>>     ===================================================================
>>     RCS file: /cvs/gcc/gcc/libstdc++-v3/config/os/newlib/ctype_inline.h,v
>>     retrieving revision 1.1
>>     diff -c -p -r1.1 ctype_inline.h
>>     *** config/os/newlib/ctype_inline.h 24 Jun 2002 05:49:54 -0000 1.1
>>     --- config/os/newlib/ctype_inline.h 1 Aug 2002 21:38:07 -0000
>>     ***************
>>     *** 1,6 ****
>>       // Locale support -*- C++ -*-
>>
>>     ! // Copyright (C) 2000 Free Software Foundation, Inc.
>>       //
>>       // This file is part of the GNU ISO C++ Library.  This library is
>free
>>       // software; you can redistribute it and/or modify it under the
>>     --- 1,6 ----
>>       // Locale support -*- C++ -*-
>>
>>     ! // Copyright (C) 2000, 2002 Free Software Foundation, Inc.
>>       //
>>       // This file is part of the GNU ISO C++ Library.  This library is
>free
>>       // software; you can redistribute it and/or modify it under the
>>     ***************
>>     *** 37,50 ****
>>         bool
>>         ctype<char>::
>>         is(mask __m, char __c) const
>>     !   { return (_M_table + 1)[(unsigned char)(__c)] & __m; }
>>
>>         const char*
>>         ctype<char>::
>>         is(const char* __low, const char* __high, mask* __vec) const
>>         {
>>           while (__low < __high)
>>     !       *__vec++ = (_M_table + 1)[(unsigned char) (*__low++)];
>>           return __high;
>>         }
>>
>>     --- 37,50 ----
>>         bool
>>         ctype<char>::
>>         is(mask __m, char __c) const
>>     !   { return (_M_table + 1)[static_cast<unsigned char>(__c)] & __m; }
>>
>>         const char*
>>         ctype<char>::
>>         is(const char* __low, const char* __high, mask* __vec) const
>>         {
>>           while (__low < __high)
>>     !       *__vec++ = (_M_table + 1)[static_cast<unsigned
>char>(*__low++)];
>>           return __high;
>>         }
>>
>>     ***************
>>     *** 52,58 ****
>>         ctype<char>::
>>         scan_is(mask __m, const char* __low, const char* __high) const
>>         {
>>     !     while (__low < __high && !((_M_table + 1)[(unsigned
>char)(*__low)] & __m))
>>             ++__low;
>>           return __low;
>>         }
>>     --- 52,59 ----
>>         ctype<char>::
>>         scan_is(mask __m, const char* __low, const char* __high) const
>>         {
>>     !     while (__low < __high
>>     !    && !((_M_table + 1)[static_cast<unsigned char>(*__low)] & __m))
>>             ++__low;
>>           return __low;
>>         }
>>     ***************
>>     *** 62,73 ****
>>         scan_not(mask __m, const char* __low, const char* __high) const
>>         {
>>           while (__low < __high
>>     !    && ((_M_table + 1)[(unsigned char)(*__low)] & __m) != 0)
>>             ++__low;
>>           return __low;
>>         }
>>     -
>>     -
>>     -
>>     -
>>     -
>>     --- 63,69 ----
>>         scan_not(mask __m, const char* __low, const char* __high) const
>>         {
>>           while (__low < __high
>>     !    && ((_M_table + 1)[static_cast<unsigned char>(*__low)] & __m) !=
>0)
>>             ++__low;
>>           return __low;
>>         }
>>     Index: config/os/newlib/ctype_noninline.h
>>     ===================================================================
>>     RCS file:
>/cvs/gcc/gcc/libstdc++-v3/config/os/newlib/ctype_noninline.h,v
>>     retrieving revision 1.1
>>     diff -c -p -r1.1 ctype_noninline.h
>>     *** config/os/newlib/ctype_noninline.h 24 Jun 2002 05:49:54 -0000 1.1
>>     --- config/os/newlib/ctype_noninline.h 1 Aug 2002 21:38:07 -0000
>>     ***************
>>     *** 35,41 ****
>>
>>         const ctype_base::mask*
>>         ctype<char>::classic_table() throw()
>>     !   { return _ctype_; }
>>
>>         ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
>>            size_t __refs)
>>     --- 35,41 ----
>>
>>         const ctype_base::mask*
>>         ctype<char>::classic_table() throw()
>>     !   { return _ctype_ + 1; }
>>
>>         ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
>>            size_t __refs)
>>
>>
>http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
>r=7461
>>


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