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 di...@apache.org on 2007/11/30 13:31:39 UTC

svn commit: r599799 - in /webservices/axis2/trunk/c/src/core: deployment/dep_engine.c engine/conf.c

Author: dinesh
Date: Fri Nov 30 04:31:34 2007
New Revision: 599799

URL: http://svn.apache.org/viewvc?rev=599799&view=rev
Log:
fixed memory leaks in fault path

Modified:
    webservices/axis2/trunk/c/src/core/deployment/dep_engine.c
    webservices/axis2/trunk/c/src/core/engine/conf.c

Modified: webservices/axis2/trunk/c/src/core/deployment/dep_engine.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/deployment/dep_engine.c?rev=599799&r1=599798&r2=599799&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/deployment/dep_engine.c (original)
+++ webservices/axis2/trunk/c/src/core/deployment/dep_engine.c Fri Nov 30 04:31:34 2007
@@ -1423,7 +1423,6 @@
             axis2_svc_grp_t *svc_grp = NULL;
             axis2_char_t *file_name = NULL;
             axis2_module_desc_t *meta_data = NULL;
-            axis2_arch_reader_t *arch_reader = NULL;
 
             dep_engine->curr_file = (axis2_arch_file_data_t *)
                 axutil_array_list_get(dep_engine->ws_to_deploy, env, i);
@@ -1433,18 +1432,23 @@
             {
                 case AXIS2_SVC:
                 {
-                    arch_reader = axis2_arch_reader_create(env);
+                    if (dep_engine->arch_reader)
+                    {
+                        axis2_arch_reader_free(dep_engine->arch_reader, env);
+                        dep_engine->arch_reader = NULL;
+                    }
 
+                    dep_engine->arch_reader = axis2_arch_reader_create (env);
                     svc_grp = axis2_svc_grp_create_with_conf(env, dep_engine->conf);
                     file_name = axis2_arch_file_data_get_name(dep_engine->
                                                               curr_file, env);
-                    status = axis2_arch_reader_process_svc_grp(arch_reader, env,
+                    status = axis2_arch_reader_process_svc_grp(dep_engine->arch_reader, env,
                                                                file_name,
                                                                dep_engine, svc_grp);
                     if (AXIS2_SUCCESS != status)
                     {
-                        axis2_arch_reader_free(arch_reader, env);
-                        arch_reader = NULL;
+                        axis2_arch_reader_free(dep_engine->arch_reader, env);
+                        dep_engine->curr_file = NULL;
                         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_SVC,
                                         AXIS2_FAILURE);
                         return status;
@@ -1453,8 +1457,8 @@
                     status = axis2_dep_engine_add_new_svc(dep_engine, env, svc_grp);
                     if (AXIS2_SUCCESS != status)
                     {
-                        axis2_arch_reader_free(arch_reader, env);
-                        arch_reader = NULL;
+                        axis2_arch_reader_free(dep_engine->arch_reader, env);
+                        dep_engine->curr_file = NULL;
                         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_SVC,
                                         AXIS2_FAILURE);
                         return status;
@@ -1464,10 +1468,10 @@
                 }
                 case AXIS2_MODULE:
                 {
-                    arch_reader = axis2_arch_reader_create(env);
                     if (dep_engine->arch_reader)
                     {
                         axis2_arch_reader_free(dep_engine->arch_reader, env);
+                        dep_engine->arch_reader = NULL;
                     }
                     dep_engine->arch_reader = axis2_arch_reader_create(env);
                     meta_data = axis2_module_desc_create(env);
@@ -1478,8 +1482,9 @@
                                                            dep_engine, meta_data);
                     if (AXIS2_SUCCESS != status)
                     {
-                        axis2_arch_reader_free(arch_reader, env);
-                        arch_reader = NULL;
+                        axis2_arch_reader_free (dep_engine->arch_reader, env);
+                        dep_engine->arch_reader = NULL;
+                        dep_engine->curr_file = NULL;
                         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_MODULE,
                                         AXIS2_FAILURE);
                         return AXIS2_FAILURE;
@@ -1488,18 +1493,18 @@
                                                              meta_data);
                     if (AXIS2_SUCCESS != status)
                     {
-                        axis2_arch_reader_free(arch_reader, env);
-                        arch_reader = NULL;
+                        axis2_arch_reader_free (dep_engine->arch_reader, env);
+                        dep_engine->arch_reader = NULL;
+                        dep_engine->curr_file = NULL;
                         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_MODULE,
                                         AXIS2_FAILURE);
                         return AXIS2_FAILURE;
                     }
-
                     dep_engine->curr_file = NULL;
                     break;
                 }
             };
-            axis2_arch_reader_free(arch_reader, env);
+            axis2_arch_reader_free (dep_engine->arch_reader, env);
             dep_engine->arch_reader = NULL;
             dep_engine->curr_file = NULL;
         }

Modified: webservices/axis2/trunk/c/src/core/engine/conf.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/engine/conf.c?rev=599799&r1=599798&r2=599799&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/engine/conf.c (original)
+++ webservices/axis2/trunk/c/src/core/engine/conf.c Fri Nov 30 04:31:34 2007
@@ -516,6 +516,11 @@
         axis2_desc_free(conf->base, env);
     }
 
+    if (conf->axis2_xml)
+    {
+        AXIS2_FREE (env->allocator, conf->axis2_xml);
+    }
+
     if (conf)
     {
         AXIS2_FREE(env->allocator, conf);
@@ -1391,7 +1396,6 @@
     {
         axutil_file_t *file = NULL;
         axis2_char_t *file_name = NULL;
-        axis2_arch_reader_t *arch_reader = NULL;
         const axis2_char_t *repos_path = NULL;
         axis2_arch_file_data_t *file_data = NULL;
         axis2_char_t *temp_path1 = NULL;
@@ -1403,11 +1407,6 @@
 		axis2_bool_t flag;
 		axis2_char_t *axis2_xml;
 
-        arch_reader = axis2_arch_reader_create(env);
-        if (!arch_reader)
-        {
-            return AXIS2_FAILURE;
-        }
         file_name = axutil_qname_get_localpart(module_ref, env);
         file =
             (axutil_file_t *) axis2_arch_reader_create_module_arch(env,
@@ -1456,7 +1455,7 @@
         file_data = axis2_arch_file_data_create_with_type_and_file(env,
                                                                    AXIS2_MODULE,
                                                                    file);
-
+        axutil_file_free (file, env);
 		if (!flag)
         {
         	dep_engine = 
@@ -1476,9 +1475,22 @@
          */
 
 		axis2_dep_engine_set_module_dir (dep_engine, env, path);
+
+        if (path)
+        {
+            AXIS2_FREE (env->allocator, path);
+        }
+
+        if (file_data)
+        {
+            axis2_arch_file_data_free(file_data, env);
+        }
+
         module_desc =
             axis2_dep_engine_build_module(dep_engine, env, file, conf);
         is_new_module = AXIS2_TRUE;
+        AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "free dep engine");
+        axis2_dep_engine_free (dep_engine, env);
     }
 	
     if (module_desc)
@@ -1507,6 +1519,7 @@
         AXIS2_ERROR_SET(env->error, AXIS2_ERROR_INVALID_MODULE, AXIS2_FAILURE);
         return AXIS2_FAILURE;
     }
+
     if (to_be_engaged)
     {
         axis2_phase_resolver_t *phase_resolver = NULL;



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org