Anton Pevtsov wrote:
> OK, now it is clear, thanks.
> The patch is attached.
Please go ahead and commit this. Also, please feel free to commit
trivial changes like this one without review.
Martin
>
> Here is the ChangeLog:
>
> 2006-03-17 Anton Pevtsov <antonp@moscow.vdiweb.com>
>
> * 21.string.erase.cpp (main): Fixed bug with missed '#' sign.
>
>
> Thanks,
> Anton Pevtsov
>
> -----Original Message-----
> From: Martin Sebor [mailto:sebor@roguewave.com]
> Sent: Thursday, March 16, 2006 20:55
> To: stdcxx-dev@incubator.apache.org
> Subject: Re: svn commit: r386035 -
> /incubator/stdcxx/trunk/tests/strings/21.string.erase.cpp
>
>
> Anton Pevtsov wrote:
>
> >> Is the adding of this missing '#' fix the problem? I.e. will this line
>
>
> >> ...
> >> "|-no-erase-range#",
> >> ...
> >> be correct?
>
>
> Yes.
>
> Without the '#' the option is expected to be handled by a callback
> function (called by the option processor when the option is seen on the
> command line). With '#', the option "handler" is expected to be a
> pointer to an int (let's call it popt) and each time the option is seen
> on the command line the option processor increments *popt by 1 (or sets
> it to the value of a numeric argument if one is provided, e.g.,
> --no-erase-range=5).
>
>
> >> It works for our case but... I have vague idea that we have had
> >> another problem with this place in tests and there was some another
> >> problem when the pound sign have been set... But I am not sure - I
> >> need to look for this in the mail archive.
>
>
> All the other options here use the '#', why should this one be any
> different? (Because it's last? No, that wouldn't be correct.)
>
> Martin
>
>
> >>
> >>
> >> Thanks,
> >> Anton Pevtsov
> >>
> >>
> >> -----Original Message-----
> >> From: Martin Sebor [mailto:sebor@roguewave.com]
> >> Sent: Wednesday, March 15, 2006 22:45
> >> To: stdcxx-dev@incubator.apache.org
> >> Subject: Re: svn commit: r386035 -
> >> /incubator/stdcxx/trunk/tests/strings/21.string.erase.cpp
> >>
> >>
> >> antonp@apache.org wrote:
> >>
> >
> >>>>Author: antonp
> >>>>Date: Wed Mar 15 02:18:36 2006
> >>>>New Revision: 386035
> >
> >>
> >> [...]
> >>
> >
> >>>>@@ -512,9 +547,21 @@
> >>>> 0 /* no comment */,
> >>>> run_test,
> >>>> "|-no-char_traits# "
> >>>>- "|-no-user_traits# ",
> >>>>- "|-no-user_chars",
> >>>>+ "|-no-user_traits# "
> >>>>+ "|-no-user_chars# "
> >>>>+ "|-no-exceptions# "
> >>>>+ "|-no-erase# "
> >>>>+ "|-no-erase-pos# "
> >>>>+ "|-no-erase-count# "
> >>>>+ "|-no-erase-iterator# "
> >>>>+ "|-no-erase-range",
> >
> >>
> >>
> >> This is missing the trailing pound sign so the option processor will
> >> assume the address is that of a callback function and try to call it
> >> when it sees the option on the command line.
> >>
> >> Here's what I get on Solaris/SPARC, for example:
> >> $ ./21_erase --no-erase-range
> >> Illegal Instruction (core dumped)
> >>
> >> We should extend __rw_memattr() to check function pointers to make
> >> sure they point to memory with executable permissions and detect and
> >> diagnose these kinds of mismatches.
> >>
> >> Martin
>
>
>
> ------------------------------------------------------------------------
>
> Index: 21.string.erase.cpp
> ===================================================================
> --- 21.string.erase.cpp (revision 386632)
> +++ 21.string.erase.cpp (working copy)
> @@ -1,6 +1,6 @@
> /***************************************************************************
> *
> - * erase.cpp - string test exercising [lib.string::erase]
> + * 21.string.erase.cpp - string test exercising [lib.string::erase]
> *
> * $Id$
> *
> @@ -554,7 +554,7 @@
> "|-no-erase-pos# "
> "|-no-erase-count# "
> "|-no-erase-iterator# "
> - "|-no-erase-range",
> + "|-no-erase-range#",
> &rw_opt_no_char_traits,
> &rw_opt_no_user_traits,
> &rw_opt_no_user_chars,
|