[ 
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]

Reply via email to