Eric Lemings wrote:
Rather than having malloc() function calls scattered throughout the test
driver, I was wondering if a conventional malloc() wrapper wouldn't take
care of a lot of this error checking and null pointer dereference
warnings.  A conventional Unix malloc() wrapper checks the return value
and just prints a diagnostic and exits the program if it is null.

I think it would make sense. We already do something like this in
other areas of the driver (and/or the exec utility) to simplify
error handling.

Martin


Brad.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 22, 2008 5:39 PM
To: [EMAIL PROTECTED]
Subject: svn commit: r650698 - /stdcxx/branches/4.2.x/tests/src/cmdopt.cpp

Author: sebor
Date: Tue Apr 22 16:38:40 2008
New Revision: 650698

URL: http://svn.apache.org/viewvc?rev=650698&view=rev
Log:
2008-04-22  Martin Sebor  <[EMAIL PROTECTED]>

        STDCXX-754
        * tests/src/cmdopt.cpp (rw_vsetopts): Handled malloc() failure.
        Added an assertion to silence a bogus HP aCC 6/cadvise warning
        #20200-D: Potential null pointer dereference. Unfortunately,
        with the one gone another bogus one pops up...

Modified:
    stdcxx/branches/4.2.x/tests/src/cmdopt.cpp

Modified: stdcxx/branches/4.2.x/tests/src/cmdopt.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/src/c
mdopt.cpp?rev=650698&r1=650697&r2=650698&view=diff
==============================================================
================
--- stdcxx/branches/4.2.x/tests/src/cmdopt.cpp (original)
+++ stdcxx/branches/4.2.x/tests/src/cmdopt.cpp Tue Apr 22 16:38:40 2008
@@ -20,7 +20,7 @@
* implied. See the License for the specific language governing
  * permissions and limitations under the License.
  *
- * Copyright 2005-2006 Rogue Wave Software.
+ * Copyright 2005-2008 Rogue Wave Software, Inc.
* **************************************************************
************/
@@ -518,6 +518,8 @@
                 lopt = lastopt->loptbuf_;
             else {
                 lopt = (char*)malloc (optlen + 1);
+                if (0 == lopt)
+                    return -1;   // error
                 lastopt->lopt_ = lopt;
             }
@@ -533,6 +535,8 @@
         lastopt->maxcount_ = 1;
int arg_is_callback = true;
+
+        RW_ASSERT (0 != next);
if ('#' == *next) {
             // examples of option specification:




Reply via email to