Generated stubs leak memory associated with string/array properties
-------------------------------------------------------------------
Key: AXIS2C-855
URL: https://issues.apache.org/jira/browse/AXIS2C-855
Project: Axis2-C
Issue Type: Bug
Components: code generation
Affects Versions: Current (Nightly)
Environment: Windows XP, Visual Studio 2005, guththila parser, libcurl
Reporter: Bill Mitchell
The generated adb_<type>_free methods leak memory associated with string or
array properties, i.e., any property with associated memory. The free routine
correctly calls the reset routine to actually free the memory. But the reset
routine has an incorrectly written guard to verify its passed pointer, such
that it always returns without freeing anything.
Here is a sample of the generated reset routine for a constraint property that
is a string.
axis2_status_t AXIS2_CALL
adb_conditionInstance_type0_reset_constraint(
adb_conditionInstance_type0_t* _conditionInstance_type0,
const axutil_env_t *env)
{
int i = 0;
int count = 0;
void *element = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, _conditionInstance_type0,
AXIS2_FAILURE);
if(NULL != _conditionInstance_type0)
{
return AXIS2_FAILURE;
}
if(_conditionInstance_type0->property_constraint != NULL)
{
AXIS2_FREE(env-> allocator,
_conditionInstance_type0->property_constraint);
_conditionInstance_type0->property_constraint = NULL;
}
_conditionInstance_type0->is_valid_constraint = AXIS2_FALSE;
return AXIS2_SUCCESS;
}
As you can see, after using AXIS2_PARAM_CHECK to return an error if the passed
_conditionInstance_type0 pointer is zero, the generated code then returns an
error if the pointer is nonzero. Although one could simply fix the !=
comparison to be ==, the second test is redundant thanks to the
AXIS2_PARAM_CHECK and could best be removed entirely.
This error is present in all of the adb_<type>_reset routines, but causes a
memory leak only for types represented by allocated memory.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]