Bug report

Sannier, David G SanniDG@europe.stortek.com
Wed Jan 3 05:49:00 GMT 2001


Originator 
	David Sannier

Organization 

Confidential 
	no

Synopsis 
	basic_string<>::c_str() bug

Severity 
     non-critical 

Priority 
     low 

Category 
     libstdc++ 

Class 
     sw-bug 

Release 
     gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)

Environment 
	OS : Linux 
	Hardware architecture : i386 (PII)

Description 
/usr/include/g++-2/std/bastring.h: In method `const unsigned char *
basic_string<unsigned char,string_char_traits<unsigned
char>,__default_alloc_template<true,0> >::c_str<unsigned char,
string_char_traits<unsigned char>, alloc>() const':
essai15.cc:8:   instantiated from here
/usr/include/g++-2/std/bastring.h:301: warning: return to `const unsigned
char *' from `char *' changes signedness

How-To-Repeat 
#include <string>

typedef basic_string<unsigned char> Ustring;

int main(void)
{
  Ustring s = (unsigned char *)"toto\n";
  const unsigned char* c = s.c_str();

  return 0;
}

Fix 
Add the apropriate cast :

Replace

  const charT* c_str () const
    { if (length () == 0) return ""; terminate (); return data (); }

By

  const charT* c_str () const
    { if (length () == 0) return (const charT*)""; terminate (); return data
(); }




More information about the Gcc-bugs mailing list