[
https://issues.apache.org/jira/browse/AXIS2C-855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12555011
]
Bill Mitchell commented on AXIS2C-855:
--------------------------------------
I regenerated with a new build and verified that the reset code is now correct
in all of them. Thanks.
> 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]