From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15680 invoked by alias); 1 Aug 2002 22:36:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 15649 invoked by uid 71); 1 Aug 2002 22:36:01 -0000 Date: Thu, 01 Aug 2002 15:36:00 -0000 Message-ID: <20020801223601.15648.qmail@sources.redhat.com> To: bkoz@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: "Rick Danos" Subject: Re: libstdc++/7461: ctype::classic_table() returns offset array on Cygwin Reply-To: "Rick Danos" X-SW-Source: 2002-08/txt/msg00013.txt.bz2 List-Id: The following reply was made to PR libstdc++/7461; it has been noted by GNATS. From: "Rick Danos" To: , , , , , Cc: Subject: Re: libstdc++/7461: ctype::classic_table() returns offset array on Cygwin Date: Thu, 1 Aug 2002 16:31:43 -0600 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. -- Rick ----- Original Message ----- From: To: ; ; ; ; Sent: Thursday, August 01, 2002 3:39 PM Subject: Re: libstdc++/7461: ctype::classic_table() returns offset array on Cygwin > Synopsis: ctype::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 > > 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:: > is(mask __m, char __c) const > ! { return (_M_table + 1)[(unsigned char)(__c)] & __m; } > > const char* > ctype:: > 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:: > is(mask __m, char __c) const > ! { return (_M_table + 1)[static_cast(__c)] & __m; } > > const char* > ctype:: > is(const char* __low, const char* __high, mask* __vec) const > { > while (__low < __high) > ! *__vec++ = (_M_table + 1)[static_cast(*__low++)]; > return __high; > } > > *************** > *** 52,58 **** > ctype:: > 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:: > scan_is(mask __m, const char* __low, const char* __high) const > { > ! while (__low < __high > ! && !((_M_table + 1)[static_cast(*__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(*__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::classic_table() throw() > ! { return _ctype_; } > > ctype::ctype(__c_locale, const mask* __table, bool __del, > size_t __refs) > --- 35,41 ---- > > const ctype_base::mask* > ctype::classic_table() throw() > ! { return _ctype_ + 1; } > > ctype::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 >