You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by na...@apache.org on 2006/02/20 04:39:34 UTC
svn commit: r379009 - in /webservices/axis2/trunk/c: include/
modules/platforms/windows/ modules/util/ modules/xml/om/ modules/xml/soap/
test/xml/om/ test/xml/soap/
Author: nandika
Date: Sun Feb 19 19:39:29 2006
New Revision: 379009
URL: http://svn.apache.org/viewcvs?rev=379009&view=rev
Log:
some memory leaks fixed
Modified:
webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h
webservices/axis2/trunk/c/modules/platforms/windows/axis2_thread_mutex_windows.h
webservices/axis2/trunk/c/modules/platforms/windows/thread_mutex_windows.c
webservices/axis2/trunk/c/modules/util/log.c
webservices/axis2/trunk/c/modules/xml/om/om_document.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_fault_reason.c
webservices/axis2/trunk/c/modules/xml/soap/soap_fault_text.c
webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.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_soap_fault_reason.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h?rev=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h (original)
+++ webservices/axis2/trunk/c/include/axis2_soap_fault_reason.h Sun Feb 19 19:39:29 2006
@@ -57,7 +57,7 @@
(axis2_soap_fault_reason_t *fault_reason,
axis2_env_t **env);
- axis2_status_t (AXIS2_CALL *set_soap_text)
+ axis2_status_t (AXIS2_CALL *set_soap_fault_text)
(axis2_soap_fault_reason_t *fault_reason,
axis2_env_t **env,
struct axis2_soap_fault_text *soap_text);
@@ -126,8 +126,8 @@
#define AXIS2_SOAP_FAULT_REASON_FREE(fault_reason , env) \
((fault_reason)->ops->free_fn(fault_reason, env))
-#define AXIS2_SOAP_FAULT_REASON_SET_SOAP_TEXT(fault_reason , env, soap_text) \
- ((fault_reason)->ops->set_soap_text(fault_reason, env, soap_text))
+#define AXIS2_SOAP_FAULT_REASON_SET_SOAP_FAULT_TEXT(fault_reason , env, soap_text) \
+ ((fault_reason)->ops->set_soap_fault_text(fault_reason, env, soap_text))
#define AXIS2_SOAP_FAULT_REASON_GET_SOAP_TEXT(fault_reason , env) \
((fault_reason)->ops->get_soap_text(fault_reason, env))
Modified: webservices/axis2/trunk/c/modules/platforms/windows/axis2_thread_mutex_windows.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/platforms/windows/axis2_thread_mutex_windows.h?rev=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/platforms/windows/axis2_thread_mutex_windows.h (original)
+++ webservices/axis2/trunk/c/modules/platforms/windows/axis2_thread_mutex_windows.h Sun Feb 19 19:39:29 2006
@@ -3,7 +3,7 @@
#include <process.h>
#include <windows.h>
-
+#include <axis2_allocator.h>
typedef enum thread_mutex_type
{
thread_mutex_critical_section,
@@ -20,6 +20,7 @@
thread_mutex_type type;
HANDLE handle;
CRITICAL_SECTION section;
+ axis2_allocator_t *allocator;
};
#endif /* AXIS2_THREAD_MUTEX_WINDOWS_H */
Modified: webservices/axis2/trunk/c/modules/platforms/windows/thread_mutex_windows.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/platforms/windows/thread_mutex_windows.c?rev=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/platforms/windows/thread_mutex_windows.c (original)
+++ webservices/axis2/trunk/c/modules/platforms/windows/thread_mutex_windows.c Sun Feb 19 19:39:29 2006
@@ -20,8 +20,14 @@
static axis2_status_t thread_mutex_cleanup(void *data)
{
- axis2_thread_mutex_t *lock = data;
-
+ axis2_thread_mutex_t *lock = NULL;
+ axis2_allocator_t *allocator = NULL;
+ if(!data)
+ return AXIS2_FAILURE;
+
+ lock = (axis2_thread_mutex_t *)data;
+ allocator = lock->allocator;
+
if (lock->type == thread_mutex_critical_section)
{
DeleteCriticalSection(&lock->section);
@@ -32,6 +38,8 @@
return AXIS2_FAILURE;
}
}
+
+ AXIS2_FREE(allocator, lock);
return AXIS2_SUCCESS;
}
@@ -40,8 +48,9 @@
{
axis2_thread_mutex_t *mutex = NULL;
- mutex = (axis2_thread_mutex_t *)AXIS2_MALLOC(allocator, sizeof(*mutex));
-
+ mutex = (axis2_thread_mutex_t *)AXIS2_MALLOC(allocator, sizeof(axis2_thread_mutex_t));
+ mutex->allocator = allocator;
+
if (flags == AXIS2_THREAD_MUTEX_DEFAULT) /*unnested*/
{
/* Use an auto-reset signaled event, ready to accept one
@@ -95,7 +104,8 @@
return AXIS2_SUCCESS;
}
-AXIS2_DECLARE(axis2_status_t) axis2_thread_mutex_unlock(axis2_thread_mutex_t *mutex)
+AXIS2_DECLARE(axis2_status_t)
+axis2_thread_mutex_unlock(axis2_thread_mutex_t *mutex)
{
if (mutex->type == thread_mutex_critical_section)
{
@@ -120,7 +130,8 @@
return AXIS2_SUCCESS;
}
-AXIS2_DECLARE(axis2_status_t) axis2_thread_mutex_destroy(axis2_thread_mutex_t *mutex)
+AXIS2_DECLARE(axis2_status_t)
+axis2_thread_mutex_destroy(axis2_thread_mutex_t *mutex)
{
return thread_mutex_cleanup((void*)mutex);
}
Modified: webservices/axis2/trunk/c/modules/util/log.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/log.c?rev=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/log.c (original)
+++ webservices/axis2/trunk/c/modules/util/log.c Sun Feb 19 19:39:29 2006
@@ -35,15 +35,28 @@
axis2_status_t AXIS2_CALL
axis2_log_impl_free (axis2_allocator_t *allocator, axis2_log_t *log)
{
+ axis2_log_impl_t *log_impl = NULL;
if (NULL != log )
{
- if ( NULL != log->ops)
- AXIS2_FREE (allocator, log->ops);
- if (NULL != AXIS2_INTF_TO_IMPL(log)->stream)
- axis2_file_handler_close(AXIS2_INTF_TO_IMPL(log)->stream);
+ log_impl = AXIS2_INTF_TO_IMPL(log);
- AXIS2_FREE (allocator, AXIS2_INTF_TO_IMPL(log));
+ if(NULL != log_impl->mutex)
+ {
+ axis2_thread_mutex_destroy(log_impl->mutex);
+ log_impl->mutex = NULL;
+ }
+ if (NULL != AXIS2_INTF_TO_IMPL(log)->stream)
+ {
+ axis2_file_handler_close(log_impl->stream);
+ log_impl->stream = NULL;
+ }
+ if ( NULL != log->ops)
+ {
+ AXIS2_FREE (allocator, log->ops);
+ log->ops = NULL;
+ }
+ AXIS2_FREE (allocator, log_impl);
}
return AXIS2_SUCCESS;
}
Modified: webservices/axis2/trunk/c/modules/xml/om/om_document.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/om/om_document.c?rev=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/om_document.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/om_document.c Sun Feb 19 19:39:29 2006
@@ -173,15 +173,26 @@
document = AXIS2_INTF_TO_IMPL(om_document);
if (document->char_set_encoding)
+ {
AXIS2_FREE((*env)->allocator, document->char_set_encoding);
+ document->char_set_encoding = NULL;
+ }
if (document->xml_version)
+ {
AXIS2_FREE((*env)->allocator, document->xml_version);
+ document->xml_version = NULL;
+ }
+ if(document->root_element)
+ {
- AXIS2_OM_NODE_FREE_TREE(document->root_element, env);
-
+ AXIS2_OM_NODE_FREE_TREE(document->root_element, env);
+ document->root_element = NULL;
+ }
if(document->om_document.ops)
+ {
AXIS2_FREE((*env)->allocator, document->om_document.ops);
-
+ document->om_document.ops = NULL;
+ }
AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(document));
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=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/om/om_element.c (original)
+++ webservices/axis2/trunk/c/modules/xml/om/om_element.c Sun Feb 19 19:39:29 2006
@@ -681,9 +681,11 @@
}
val = NULL;
- }
- axis2_hash_free (AXIS2_INTF_TO_IMPL(om_element)->attributes, env);
}
+ axis2_hash_free (AXIS2_INTF_TO_IMPL(om_element)->attributes, env);
+ AXIS2_FREE((*env)->allocator, hi);
+ }
+
if (element_impl->namespaces)
{
axis2_hash_index_t *hi;
@@ -699,7 +701,7 @@
val = NULL;
}
-
+ AXIS2_FREE((*env)->allocator, hi);
axis2_hash_free (element_impl->namespaces, env);
/*TODO: free namespaces */
/* need to iterate and free individual namespaces */
@@ -796,6 +798,8 @@
status = AXIS2_FAILURE;
}
}
+ AXIS2_FREE((*env)->allocator, hi);
+
}
return status;
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=379009&r1=379008&r2=379009&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 Sun Feb 19 19:39:29 2006
@@ -490,7 +490,7 @@
AXIS2_SOAP_FAULT_TEXT_SET_BASE_NODE(soap_fault_text, env, om_ele_node);
AXIS2_SOAP_FAULT_TEXT_SET_SOAP_VERSION(soap_fault_text, env, AXIS2_SOAP12);
fault_reason = AXIS2_SOAP_FAULT_GET_REASON(soap_fault, env);
- AXIS2_SOAP_FAULT_REASON_SET_SOAP_TEXT(fault_reason, env, soap_fault_text);
+ AXIS2_SOAP_FAULT_REASON_SET_SOAP_FAULT_TEXT(fault_reason, env, soap_fault_text);
/*****************
AXIS2_OM_NODE_SET_BUILD_STATUS(om_ele_node, env, AXIS2_FALSE);
******************/
Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_fault_reason.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_fault_reason.c?rev=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_fault_reason.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_fault_reason.c Sun Feb 19 19:39:29 2006
@@ -49,7 +49,7 @@
axis2_env_t **env);
axis2_status_t AXIS2_CALL
-axis2_soap_fault_reason_set_soap_text
+axis2_soap_fault_reason_set_soap_fault_text
(axis2_soap_fault_reason_t *fault_reason,
axis2_env_t **env,
axis2_soap_fault_text_t *soap_text);
@@ -121,8 +121,8 @@
fault_reason_impl->fault_reason.ops->free_fn =
axis2_soap_fault_reason_free;
- fault_reason_impl->fault_reason.ops->set_soap_text =
- axis2_soap_fault_reason_set_soap_text;
+ fault_reason_impl->fault_reason.ops->set_soap_fault_text =
+ axis2_soap_fault_reason_set_soap_fault_text;
fault_reason_impl->fault_reason.ops->get_soap_text =
axis2_soap_fault_reason_get_soap_text;
@@ -209,7 +209,7 @@
}
axis2_status_t AXIS2_CALL
-axis2_soap_fault_reason_set_soap_text
+axis2_soap_fault_reason_set_soap_fault_text
(axis2_soap_fault_reason_t *fault_reason,
axis2_env_t **env,
axis2_soap_fault_text_t *soap_text)
Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_fault_text.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_fault_text.c?rev=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_fault_text.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_fault_text.c Sun Feb 19 19:39:29 2006
@@ -186,7 +186,7 @@
&this_node);
fault_text_impl->om_ele_node = this_node;
fault_text_impl->om_ele = this_ele;
-
+ AXIS2_SOAP_FAULT_REASON_SET_SOAP_FAULT_TEXT(parent, env, fault_text);
return &(fault_text_impl->fault_text);
}
Modified: webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c?rev=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c (original)
+++ webservices/axis2/trunk/c/modules/xml/soap/soap_header_block.c Sun Feb 19 19:39:29 2006
@@ -203,6 +203,7 @@
ns , &this_node);
header_block_impl->om_ele_node = this_node;
+ AXIS2_SOAP_HEADER_SET_HEADER_BLOCK(header, env, header_block);
return &(header_block_impl->header_block);
}
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=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/xml/om/test_om.c (original)
+++ webservices/axis2/trunk/c/test/xml/om/test_om.c Sun Feb 19 19:39:29 2006
@@ -157,8 +157,6 @@
AXIS2_OM_OUTPUT_FREE(om_output, &environment);
if(buffer)
printf("%s",buffer);
- AXIS2_OM_DOCUMENT_FREE_OM_NODES(document, &environment);
- AXIS2_OM_DOCUMENT_FREE(document, &environment);
AXIS2_OM_STAX_BUILDER_FREE(builder, &environment);
if(buffer)
@@ -272,7 +270,7 @@
/* test_om_serialize(); */
axis2_env_free(environment);
- free(allocator);
+ axis2_allocator_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=379009&r1=379008&r2=379009&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/xml/soap/test_soap.c (original)
+++ webservices/axis2/trunk/c/test/xml/soap/test_soap.c Sun Feb 19 19:39:29 2006
@@ -30,6 +30,7 @@
int close_soap(void *ctx)
{
fclose(f);
+ return AXIS2_TRUE;
}
int printnode(axis2_om_node_t *om_node, axis2_env_t **env)
@@ -200,8 +201,8 @@
printf("%s \n", buffer);
AXIS2_SOAP_ENVELOPE_FREE(soap_envelope, env);
-
-
+ AXIS2_FREE((*env)->allocator, buffer);
+ AXIS2_OM_OUTPUT_FREE(om_output, env);
return AXIS2_SUCCESS;
}
@@ -222,10 +223,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_FREE((*env)->allocator, buffer);
AXIS2_SOAP_ENVELOPE_FREE(soap_envelope, env);
AXIS2_OM_OUTPUT_FREE(om_output, env);
-
+return 0;
}
int main(int argc, char *argv[])
@@ -256,5 +257,7 @@
build_soap(&env, filename,uri);
create_soap_fault(&env);
axis2_env_free(env);
+ axis2_allocator_free(allocator);
+ getchar();
return 0;
}