I built and ran w/ gcc 4.0.2 on SUSE 9: $ cat /etc/SuSE-release SUSE LINUX Enterprise Server 9 (i586) VERSION = 9 PATCHLEVEL = 3
$ gcc -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc-4.0.2/configure --prefix=/build/nicoara/contrib/gcc-4.0.2 --enable-threads=posix --enable-languages=c,c++ --enable-shared --enable-__cxa_atexit Thread model: posix gcc version 4.0.2 and it still doesn't fail for me. Liviu Liviu Nicoara wrote: > Anton, > > I am going to try it on one of our SUSE 9 boxes and I will let you know > how it goes for me. > > Thanks, > Liviu > > Anton Pevtsov wrote: >> Hi Liviu, >> >> Your test either doesn't work on my environment. I have gcc built by >> myself on SuSe Linux 9.1. >> >> Thanks, >> Anton Pevtsov >> >> >> -----Original Message----- >> From: Liviu Nicoara [mailto:[EMAIL PROTECTED] >> Sent: Monday, April 03, 2006 19:53 >> To: [email protected] >> Subject: Re: basic_string::insert (iterator p, InputIterator first, >> InputIterator last) on Linux, gcc-4.0.2 >> >> >> Hi Anton, >> >> I used a slightly modified test case: >> >> $ uname -a >> Linux skynet 2.6.14.5 #3 SMP PREEMPT Mon Jan 9 13:59:21 MST 2006 i686 >> unknown unknown GNU/Linux >> >> $ gcc --version >> gcc (GCC) 4.0.2 >> Copyright (C) 2005 Free Software Foundation, Inc. >> This is free software; see the source for copying conditions. There is >> NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR >> PURPOSE. >> >> $ cat t.cpp >> >> #include <iostream> >> #include <string> >> >> static const char* test = "bcabcdef"; >> >> int main (void) >> { >> std::string s ("abcdef"); >> s.insert (s.begin (), s.begin () + 1, s.begin () + 3); >> >> std::cout << "Expected " << test << " and got " << s << '\n'; >> >> return 0; >> } >> >> $ make t >> gcc -c -I/build/nicoara/stdcxx/include/ansi -D_RWSTDDEBUG >> -D_RWSTD_USE_CONFIG -I/build/nicoara/stdcxx/build/include >> -I/build/nicoara/stdcxx/include -I/build/nicoara/stdcxx/examples/include >> -pedantic -nostdinc++ -g -W -Wall -Wcast-qual -Winline -Wshadow >> -Wwrite-strings -Wno-long-long -Wcast-align >> /build/nicoara/stdcxx/examples/manual/t.cpp >> gcc t.o -o t -L/build/nicoara/stdcxx/build/lib -lstd11s -lsupc++ -lm >> >> and got: >> >> $ ./t >> Expected bcabcdef and got bcabcdef >> >> Gcc was built by myself on a Slackware 10.1 box from GNU sources (not RH >> or anything). >> >> Please let me know if I am missing anything. >> >> - Liviu >> >> Liviu Nicoara wrote: >>> Hi Anton, >>> >>> What kind of a build was this? Is the testing infrastructure needed to >>> exhibit the problem or you just used it for convenience in printing >>> the results? >>> >>> - Liviu >>> >>> Anton Pevtsov wrote: >>>> The basic_string::insert (iterator p, InputIterator first, >>>> InputIterator >>>> last) doesn't work correctly on Linux for string str when >>>> first = str.begin() + 1, last = str.begin() + 3. >>>> >>>> This code illustrates the problem: >>>> >>>> #include <rw_printf.h> >>>> #include <rw_char.h> >>>> >>>> #include <string> >>>> #include <cstddef> >>>> >>>> int main (void) >>>> { >>>> typedef std::basic_string <char, std::char_traits<char>, >>>> std::allocator<char> > TestString; >>>> >>>> char test[] = "abcdef"; >>>> char exp_test[] = "bcabcdef"; >>>> >>>> TestString s (test, 6); >>>> s.insert (s.begin (), s.begin () + 1, s.begin () + 3); >>>> >>>> rw_printf ("this (%{#*s})->insert (*this.begin (), " >>>> "*this.begin () + 1, *this.begin () + 3) " >>>> " == %{#*s}, got %{#*s}\n", >>>> 6, test, 8, exp_test, int (s.size ()), s.c_str ()); >>>> >>>> return 0; >>>> } >>>> >>>> >>>> The output is >>>> this ("abcdef")->insert (*this.begin (), *this.begin () + 1, >> *this.begin >>>> () + 3) == "bcabcdef", got "baabcdef" >>>> >>>> On Windows the output is: >>>> this ("abcdef")->insert (*this.begin (), *this.begin () + 1, >>>> *this.begin >>>> () + 3) == "bcabcdef", got "bcabcdef" >>>> >>>> Martin, could you look into this when you have a chance, please? >>>> >>>> If you reproduce the problem I'll open the jira issue and try to >>>> investigate the cause. >>>> >>>> >>>> Thanks, >>>> Anton Pevtsov >>>> >
