ADB generated code generates memory leak
----------------------------------------
Key: AXIS2-4225
URL: https://issues.apache.org/jira/browse/AXIS2-4225
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Components: adb
Affects Versions: 1.4.1
Environment: Win32
Reporter: Mirko Wischer
Priority: Minor
The xslt used for transforming to C Code (CADBBeanTemplateSource.xsl) creates a
memory leak:
Code created for adb_..._serialize(..) contains a memory leak for the following
types:
- axutil_date_time_t
- axutil_base64_binary_t
The XSLT uses axutil_base64_binary_get_encoded_binary() and
axutil_date_time_serialize_date_time() for creating
textual representations. After writing these texts to the stream the start and
end tags are freed but the
the generated code never releases the base64 text or data_time text:
Look at the follown snippet from the trunk version of the XSLT:
(starting at Line: 4435)
<xsl:when
test="$nativePropertyType='axutil_date_time_t*'">
text_value_<xsl:value-of select="$position"/> =
axutil_date_time_serialize_date_time(<xsl:value-of
select="$propertyInstanceName"/>, env);
<xsl:if test="$anon or $istype">
axutil_stream_write(stream, env, start_input_str,
start_input_str_len);
</xsl:if>
axutil_stream_write(stream, env,
text_value_<xsl:value-of select="$position"/>,
axutil_strlen(text_value_<xsl:value-of select="$position"/>));
---> MISSING FREE AT THIS POSITION: AXIS2_FREE(env->allocator,
text_value_<xsl:value-of select="$position"/>);
<xsl:if test="$anon or $istype">
axutil_stream_write(stream, env, end_input_str,
end_input_str_len);
</xsl:if>
</xsl:when>
And starting at line: 4446
<xsl:when test="$propertyType='axutil_base64_binary_t*'">
text_value_<xsl:value-of select="$position"/>
=axutil_base64_binary_get_encoded_binary(<xsl:value-of
select="$propertyInstanceName"/>, env);
<xsl:if test="$anon or $istype">
axutil_stream_write(stream, env, start_input_str,
start_input_str_len);
</xsl:if>
axutil_stream_write(stream, env,
text_value_<xsl:value-of select="$position"/>,
axutil_strlen(text_value_<xsl:value-of select="$position"/>)); ----> MISSING
FREE HERE: AXIS2_FREE(env->allocator, text_value_<xsl:value-of
select="$position"/>);
<xsl:if test="$anon or $istype">
axutil_stream_write(stream, env, end_input_str,
end_input_str_len);
</xsl:if>
</xsl:when>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.