Just to verify, changing slocname = (char*)std::malloc (16384);
to slocname = new char[16384]; is sufficient? > -----Original Message----- > From: Martin Sebor [mailto:[EMAIL PROTECTED] On Behalf Of Martin Sebor > Sent: Thursday, March 20, 2008 2:36 PM > To: [email protected] > Subject: Re: [TESTCASE] STDCXX-750 [HP aCC 6.16] Potential null pointer > dereference in aliases.cpp > > Scott Zhong wrote: > > Martin, would you suggest that there should be a check after malloc and > > throw bad_alloc? > > I think we should just use the new expression instead of calling > malloc. That way we don't need to check. Unless we call malloc() > in the rest of the program for some reason. > > Martin > > > > >> -----Original Message----- > >> From: Martin Sebor [mailto:[EMAIL PROTECTED] On Behalf Of Martin Sebor > >> Sent: Thursday, March 20, 2008 12:02 PM > >> To: [email protected] > >> Subject: Re: [TESTCASE] STDCXX-750 [HP aCC 6.16] Potential null > > pointer > >> dereference in aliases.cpp > >> > >> I was going to say this is the same bug as STDCXX-764: > >> http://issues.apache.org/jira/browse/STDCXX-764 > >> but after looking at it more closely I believe the compiler > >> is correct in this case because malloc() returns 0 when it > >> fails to allocate memory. The warning could be clearer about > >> it. > >> > >> Martin > >> > >> Scott Zhong wrote: > >>> cat /build/scottz/t2.cpp && aCC -V && aCC -c +w > > /build/scottz/t2.cpp > >>> #include <cstdlib> > >>> > >>> int main() > >>> { > >>> static char * test = 0; > >>> if (!test) { > >>> test = (char *)std::malloc (12345); > >>> *test = '\0'; > >>> } > >>> > >>> return 0; > >>> } > >>> aCC: HP C/aC++ B3910B A.06.16 [Nov 26 2007] > >>> "/build/scottz/t2.cpp", line 8, procedure main: warning #20200-D: > >>> Potential > >>> null pointer dereference through test is detected (null > >>> definition:/build/scottz/t2.cpp, line 7) > >>> > >>> this test case shows that the warning is bogus because the pointer > >>> "test" is pointing to a valid location in memory after std::malloc > > is > >>> performed. > >>> > > > >
