Memory leak in axis2_desc_add_child
-----------------------------------

                 Key: AXIS2C-1313
                 URL: https://issues.apache.org/jira/browse/AXIS2C-1313
             Project: Axis2-C
          Issue Type: Bug
          Components: core/description
         Environment: Win32/64
            Reporter: Patrick van Beem
             Fix For: Current (Nightly)
         Attachments: axis2_desc_add_child.diff

axis2_desc_add_child() overwrites existing children with the same name. These 
become orphaned and are leaking memory (they'll never get freed).
Suggestion: Check for an existing child with the same key ad free it before 
replacing it with the new child:

AXIS2_EXTERN axis2_status_t AXIS2_CALL
axis2_desc_add_child(
    const axis2_desc_t * desc,
    const axutil_env_t * env,
    const axis2_char_t * key,
    const void *child)
{
    if (desc->children)
    {
        /* Added from here */
        axis2_msg_t* msg = (axis2_msg_t *) axutil_hash_get(desc->children, key, 
AXIS2_HASH_KEY_STRING);
        if ( msg != NULL )
        {
            axis2_msg_free(msg, env);
        }
        /* Added to here */
        axutil_hash_set(desc->children, key, AXIS2_HASH_KEY_STRING, child);
        return AXIS2_SUCCESS;
    }
    return AXIS2_FAILURE;
}


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