[ 
http://issues.apache.org/jira/browse/AXISCPP-707?page=comments#action_12314785 
] 

Henrik Nordberg commented on AXISCPP-707:
-----------------------------------------

The testing needs to include a scenario that causes this line
    throw AxisEngineException(SERVER_ENGINE_LOADING_PARSER_FAILED, 
PLATFORM_LOADLIB_ERROR); 
in the function XMLParserFactory::loadLib() in the file XMLParserFactory.cpp to 
be executed on the Win32 platform.

The fix should be to not delete the argument passed to 
Axis####Exception::processException(). The easiest way to do that is to change 
the argument type to "const std::string&". Note that this does not force people 
using the class to use std::string. They can still pass const char*. Also since 
this code seems to be the same for Axis exceptions, maybe it can be move to a 
base class.

The fact that the server is working without any crash (I assume you mean GPF or 
core dump) says little about the stability of the server. You need to run it 
with a memory checking tool. I recommend using Valgrind 2.4.0 
(www.valgrind.org, download, ./configure, make, su, make install). I run it 
like this:
valgrind /usr/sbin/httpd -X -k start -f /home/henrik/httpd/httpd.conf

When you can run your tests without valgrind reporting any problems, then you 
can feel better about the quality of the code.


> Incorrect use of delete in AxisEngineException::processException()
> ------------------------------------------------------------------
>
>          Key: AXISCPP-707
>          URL: http://issues.apache.org/jira/browse/AXISCPP-707
>      Project: Axis-C++
>         Type: Bug
>   Components: Server - Engine
>     Versions: current (nightly)
>  Environment: Windows XP Pro, VS2003
>     Reporter: Henrik Nordberg
>     Assignee: Dushshantha Chandradasa
>     Priority: Critical

>
> There is a delete statement in AxisEngineException::processException() which 
> has a couple of problems:
> First, if you were supposed to delete the pointer passed in, delete[] should 
> be used (in C++). But, at least in the case of the exception thrown when a 
> library fails to load, a constant character pointer is passed in (in this 
> case "") -- see this line in XMLParserFactory::loadLib():
> throw AxisEngineException(SERVER_ENGINE_LOADING_PARSER_FAILED, 
> PLATFORM_LOADLIB_ERROR);
> Why not just use a const std::string& instead of char*?

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to