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