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  <[EMAIL PROTECTED]>

   * 21.string.erase.cpp (main): Fixed bug with missed '#' sign.


Thanks,
Anton Pevtsov

-----Original Message-----
From: Martin Sebor [mailto:[EMAIL PROTECTED]
Sent: Thursday, March 16, 2006 20:55
To: [email protected]
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:[EMAIL PROTECTED]
 >> Sent: Wednesday, March 15, 2006 22:45
 >> To: [email protected]
 >> Subject: Re: svn commit: r386035 -
 >> /incubator/stdcxx/trunk/tests/strings/21.string.erase.cpp
 >>
 >>
 >> [EMAIL PROTECTED] 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,

Reply via email to