You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2006/01/24 04:46:36 UTC
svn commit: r371790 - in /webservices/axis2/trunk/c: include/ modules/util/
modules/xml/om/ modules/xml/soap/ test/xml/om/ test/xml/soap/
Author: nandika
Date: Mon Jan 23 19:46:18 2006
New Revision: 371790
URL: http://svn.apache.org/viewcvs?rev=371790&view=rev
Log:
memory leaks fixed
Modified:
webservices/axis2/trunk/c/include/axis2_qname.h
webservices/axis2/trunk/c/modules/util/qname.c
webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c
webservices/axis2/trunk/c/modules/xml/om/om_element.c
webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c
webservices/axis2/trunk/c/modules/xml/soap/soap_body.c
webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c
webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c
webservices/axis2/trunk/c/modules/xml/soap/soap_header.c
webservices/axis2/trunk/c/test/xml/om/test_om.c
webservices/axis2/trunk/c/test/xml/soap/test_soap.c
Modified: webservices/axis2/trunk/c/include/axis2_qname.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_qname.h?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_qname.h (original)
+++ webservices/axis2/trunk/c/include/axis2_qname.h Mon Jan 23 19:46:18 2006
@@ -83,6 +83,11 @@
axis2_char_t* (AXIS2_CALL *get_localpart)(struct axis2_qname *qname,
axis2_env_t **env);
+ /**
+ * returns a unique string created by concatanting namespace uri
+ * and localpart .
+ * The returned char* is freed when qname free function is called.
+ */
axis2_char_t* (AXIS2_CALL *to_string)(struct axis2_qname *qname,
axis2_env_t **env);
Modified: webservices/axis2/trunk/c/modules/util/qname.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/qname.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/qname.c (original)
+++ webservices/axis2/trunk/c/modules/util/qname.c Mon Jan 23 19:46:18 2006
@@ -67,6 +67,8 @@
/** prefix mandatory */
axis2_char_t *prefix;
+ axis2_char_t *qname_string;
+
}axis2_qname_impl_t;
@@ -99,12 +101,16 @@
sizeof (axis2_qname_impl_t));
if (!qn)
{
- AXIS2_ERROR_SET_ERROR_NUMBER((*env)->error, AXIS2_ERROR_NO_MEMORY);
- AXIS2_ERROR_SET_STATUS_CODE((*env)->error, AXIS2_FAILURE);
+ AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
return NULL;
}
/* set properties */
-
+ qn->localpart = NULL;
+ qn->qname_string = NULL;
+ qn->prefix = NULL;
+ qn->namespace_uri = NULL;
+
+
qn->localpart = (axis2_char_t *)AXIS2_STRDUP (localpart, env);
if (!(qn->localpart))
{
@@ -201,6 +207,11 @@
AXIS2_FREE ((*env)->allocator, qname_impl->prefix);
qname_impl->prefix = NULL;
}
+ if(qname_impl->qname_string)
+ {
+ AXIS2_FREE((*env)->allocator, qname_impl->qname_string);
+ qname_impl->qname_string = NULL;
+ }
if (qname->ops)
{
AXIS2_FREE ((*env)->allocator, qname->ops);
@@ -304,9 +315,17 @@
axis2_qname_impl_t *qname_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(qname, env, NULL);
qname_impl = AXIS2_INTF_TO_IMPL(qname);
-
+ if(qname_impl->qname_string)
+ {
+ return qname_impl->qname_string;
+ }
if(!(qname_impl->namespace_uri) || AXIS2_STRCMP(qname_impl->namespace_uri,"") == 0)
- return AXIS2_STRDUP(qname_impl->localpart, env);
+ {
+ qname_impl->qname_string = AXIS2_STRDUP(qname_impl->localpart, env);
+ }
else
- return AXIS2_STRACAT( qname_impl->namespace_uri, qname_impl->localpart, env);
+ {
+ qname_impl->qname_string = AXIS2_STRACAT( qname_impl->namespace_uri, qname_impl->localpart, env);
+ }
+ return qname_impl->qname_string;
}
Modified: webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/om_children_qname_iterator.c Mon Jan 23 19:46:18 2006
@@ -111,7 +111,8 @@
iterator_impl->current_child = current_child;
if(given_qname)
{
- iterator_impl->given_qname = AXIS2_QNAME_CLONE(given_qname, env);
+ /* iterator_impl->given_qname = AXIS2_QNAME_CLONE(given_qname, env); */
+ iterator_impl->given_qname = given_qname;
}
iterator_impl->iterator.ops->free_fn =
axis2_om_children_qname_iterator_free;
@@ -135,12 +136,13 @@
if(iterator->ops)
AXIS2_FREE((*env)->allocator, iterator->ops);
-
+ /*
if(iterator_impl->given_qname)
{
AXIS2_QNAME_FREE(iterator_impl->given_qname, env);
iterator_impl->given_qname = NULL;
}
+ */
AXIS2_FREE((*env)->allocator, iterator_impl);
return AXIS2_SUCCESS;
}
Modified: webservices/axis2/trunk/c/modules/xml/om/om_element.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/om_element.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/om_element.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/om_element.c Mon Jan 23 19:46:18 2006
@@ -639,7 +639,6 @@
name = AXIS2_QNAME_TO_STRING(qname, env);
attr = (axis2_om_attribute_t*) (axis2_hash_get(AXIS2_INTF_TO_IMPL(
om_element)->attributes, name, AXIS2_HASH_KEY_STRING));
- AXIS2_FREE((*env)->allocator, name);
return attr;
}
Modified: webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap12_builder_helper.c Mon Jan 23 19:46:18 2006
@@ -521,6 +521,7 @@
AXIS2_SOAP_FAULT_VALUE_SET_BASE_NODE(value, env, om_ele_node);
AXIS2_SOAP_FAULT_VALUE_SET_SOAP_VERSION(value, env, AXIS2_SOAP12);
AXIS2_SOAP_FAULT_SUB_CODE_SET_VALUE(sub_code, env, value);
+
builder_helper_impl->subcode_value_present = AXIS2_TRUE;
builder_helper_impl->sub_sub_code_present = AXIS2_FALSE;
builder_helper_impl->sub_code_processing = AXIS2_FALSE;
Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_body.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_body.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_body.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_body.c Mon Jan 23 19:46:18 2006
@@ -187,19 +187,16 @@
axis2_soap_body_impl_t *body_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(body, env, AXIS2_FAILURE);
body_impl = AXIS2_INTF_TO_IMPL(body);
-
+ if(body_impl->soap_fault)
+ {
+ AXIS2_SOAP_FAULT_FREE(body_impl->soap_fault, env);
+ body_impl->soap_fault = NULL;
+ }
if(body->ops)
{
AXIS2_FREE((*env)->allocator, body->ops);
body->ops = NULL;
}
-
- if(body_impl->om_ele_node)
- {
- AXIS2_OM_NODE_FREE_TREE(body_impl->om_ele_node, env);
- body_impl->om_ele_node = NULL;
- }
-
AXIS2_FREE((*env)->allocator, body_impl);
body_impl = NULL;
return AXIS2_SUCCESS;
@@ -387,4 +384,4 @@
body_impl = AXIS2_INTF_TO_IMPL(body);
body_impl->soap_builder = builder;
return AXIS2_SUCCESS;
-}
+}
Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_builder.c Mon Jan 23 19:46:18 2006
@@ -232,7 +232,7 @@
builder_impl = AXIS2_INTF_TO_IMPL(builder);
if(builder_impl->builder_helper)
{
- /* if(builder_impl->soap_version == AXIS2_SOAP11 && builder_impl->builder_helper)
+ if(builder_impl->soap_version == AXIS2_SOAP11 && builder_impl->builder_helper)
{
AXIS2_SOAP11_BUILDER_HELPER_FREE((axis2_soap11_builder_helper_t *)(builder_impl->builder_helper), env);
}
@@ -240,7 +240,6 @@
{
AXIS2_SOAP12_BUILDER_HELPER_FREE((axis2_soap12_builder_helper_t *)(builder_impl->builder_helper), env);
}
- */
}
if(builder->ops)
{
@@ -450,8 +449,10 @@
AXIS2_SOAP_HEADER_SET_BASE_NODE(soap_header, env, om_element_node);
AXIS2_SOAP_HEADER_SET_SOAP_VERSION(soap_header, env, builder_impl->soap_version);
AXIS2_SOAP_ENVELOPE_SET_HEADER(builder_impl->soap_envelope, env, soap_header);
+ AXIS2_SOAP_HEADER_SET_BUILDER(soap_header, env, builder);
status = axis2_soap_builder_process_namespace_data(builder, env,
om_element_node, AXIS2_TRUE);
+
}
else if(AXIS2_STRCMP(ele_localname, AXIS2_SOAP_BODY_LOCAL_NAME) == 0)
{
Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_envelope.c Mon Jan 23 19:46:18 2006
@@ -242,13 +242,21 @@
axis2_soap_envelope_impl_t *envelope_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(envelope, env, AXIS2_FAILURE);
envelope_impl = AXIS2_INTF_TO_IMPL(envelope);
-
+ if(envelope_impl->header)
+ {
+ AXIS2_SOAP_HEADER_FREE(envelope_impl->header, env);
+ envelope_impl->header = NULL;
+ }
+ if(envelope_impl->body)
+ {
+ AXIS2_SOAP_BODY_FREE(envelope_impl->body, env);
+ envelope_impl->body = NULL;
+ }
if(envelope->ops)
{
AXIS2_FREE((*env)->allocator, envelope->ops);
envelope->ops = NULL;
}
-
if(envelope_impl->om_ele_node)
{
AXIS2_OM_NODE_FREE_TREE(envelope_impl->om_ele_node, env);
@@ -676,5 +684,3 @@
AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_INVALID_SOAP_VERSION, AXIS2_FAILURE);
return NULL;
}
-
-
\ No newline at end of file
Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_header.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_header.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_header.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_header.c Mon Jan 23 19:46:18 2006
@@ -197,9 +197,24 @@
axis2_soap_header_impl_t *header_impl = NULL;
AXIS2_FUNC_PARAM_CHECK(header, env, AXIS2_FAILURE);
header_impl = AXIS2_INTF_TO_IMPL(header);
+
if(header_impl->header_blocks)
{
-
+ axis2_hash_index_t *hi = NULL;
+ void *val = NULL;
+
+ for (hi = axis2_hash_first (header_impl->header_blocks ,env); hi;
+ hi = axis2_hash_next ( env, hi))
+ {
+ axis2_hash_this (hi, NULL, NULL, &val);
+
+ if (val)
+ AXIS2_SOAP_HEADER_BLOCK_FREE((axis2_soap_header_block_t *)val, env);
+ val = NULL;
+
+ }
+ AXIS2_FREE((*env)->allocator, hi);
+ axis2_hash_free (header_impl->header_blocks, env);
}
if(header->ops)
{
@@ -438,5 +453,4 @@
header_impl = AXIS2_INTF_TO_IMPL(header);
header_impl->soap_builder = builder;
return AXIS2_SUCCESS;
-}
-
+}
Modified: webservices/axis2/trunk/c/test/xml/om/test_om.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/xml/om/test_om.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/xml/om/test_om.c (original)
+++ webservices/axis2/trunk/c/test/xml/om/test_om.c Mon Jan 23 19:46:18 2006
@@ -125,24 +125,6 @@
ele2 =(axis2_om_element_t*) AXIS2_OM_NODE_GET_DATA_ELEMENT(node2, &environment);
if(ele2 && AXIS2_OM_ELEMENT_GET_LOCALNAME(ele2,&environment))
{
- if(0 == AXIS2_STRCMP("messageReceiver", AXIS2_OM_ELEMENT_GET_LOCALNAME(ele2, &environment)))
- {
- axis2_char_t *class_name = NULL;
- axis2_qname_t *class_qname = NULL;
- axis2_om_attribute_t *recv_name = NULL;
-
- printf("messageReceiver***********************\n");
- class_qname = axis2_qname_create(&environment, "class", NULL, NULL);
- printf("came1\n");
- recv_name = AXIS2_OM_ELEMENT_GET_ATTRIBUTE(ele2, &environment, class_qname);
- if(!recv_name)
- {
- printf("attribute is null\n");
- }
- class_name = AXIS2_OM_ATTRIBUTE_GET_VALUE(recv_name, &environment);
- printf("class name:%s\n", class_name);
- return 0;
- }
printf("\n localname %s\n" , AXIS2_OM_ELEMENT_GET_LOCALNAME(ele2,&environment));
}
@@ -181,9 +163,6 @@
AXIS2_OM_STAX_BUILDER_FREE(builder, &environment);
if(buffer)
AXIS2_FREE(environment->allocator, buffer);
-
-
-
printf ("\ndone\n");
return 0;
}
@@ -289,8 +268,10 @@
environment = axis2_env_create_with_error_log(allocator, error, axis_log);
test_om_build (file_name);
- test_om_serialize();
+/* test_om_serialize(); */
+
axis2_env_free(environment);
+ free(allocator);
return 0;
}
Modified: webservices/axis2/trunk/c/test/xml/soap/test_soap.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/xml/soap/test_soap.c?rev=371790&r1=371789&r2=371790&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/xml/soap/test_soap.c (original)
+++ webservices/axis2/trunk/c/test/xml/soap/test_soap.c Mon Jan 23 19:46:18 2006
@@ -79,7 +79,8 @@
om_builder = axis2_om_stax_builder_create(env, xml_reader);
- om_doc = axis2_om_document_create(env, NULL, om_builder);
+ /*om_doc = axis2_om_document_create(env, NULL, om_builder); */
+
soap_builder = axis2_soap_builder_create(env, om_builder, uri);
if(!soap_builder)
@@ -109,9 +110,7 @@
printnode(om_node, env);
}
}
-
-
-
+ AXIS2_OM_CHILDREN_QNAME_ITERATOR_FREE(children_iter, env);
soap_body = AXIS2_SOAP_ENVELOPE_GET_BODY(soap_envelope, env);
if (soap_body)
@@ -142,6 +141,13 @@
AXIS2_SOAP_ENVELOPE_SERIALIZE(soap_envelope, env, om_output, AXIS2_FALSE);
buffer = AXIS2_XML_WRITER_GET_XML(xml_writer, env);
printf("%s", buffer);
+ if(buffer)
+ AXIS2_FREE((*env)->allocator, buffer);
+ AXIS2_SOAP_ENVELOPE_FREE(soap_envelope, env);
+ AXIS2_SOAP_BUILDER_FREE(soap_builder, env);
+ AXIS2_OM_STAX_BUILDER_FREE(om_builder, env);
+ AXIS2_OM_OUTPUT_FREE(om_output, env);
+
return AXIS2_SUCCESS;
}
@@ -192,6 +198,10 @@
AXIS2_SOAP_ENVELOPE_SERIALIZE(soap_envelope, env, om_output, AXIS2_FALSE);
buffer = AXIS2_XML_WRITER_GET_XML(xml_writer, env);
printf("%s \n", buffer);
+
+ AXIS2_SOAP_ENVELOPE_FREE(soap_envelope, env);
+
+
return AXIS2_SUCCESS;
}
@@ -221,9 +231,13 @@
axis2_error_init();
/*build_soap_programatically(&env);*/
-
+
printf("\nbuild soap\n");
build_soap(&env, filename,uri);
+ axis2_env_free(env);
+ free(allocator);
+ env = NULL;
+ allocator = NULL;
printf("\n");
return 0;