You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by ab...@apache.org on 2014/06/12 08:27:46 UTC

svn commit: r1602070 - in /incubator/celix/trunk/framework: private/include/ private/mock/ private/src/ public/include/

Author: abroekhuis
Date: Thu Jun 12 06:27:45 2014
New Revision: 1602070

URL: http://svn.apache.org/r1602070
Log:
CELIX-119: Fixed memory leaks

Modified:
    incubator/celix/trunk/framework/private/include/manifest_parser.h
    incubator/celix/trunk/framework/private/mock/manifest_parser_mock.c
    incubator/celix/trunk/framework/private/src/bundle_archive.c
    incubator/celix/trunk/framework/private/src/bundle_revision.c
    incubator/celix/trunk/framework/private/src/framework.c
    incubator/celix/trunk/framework/private/src/manifest_parser.c
    incubator/celix/trunk/framework/private/src/module.c
    incubator/celix/trunk/framework/public/include/bundle_revision.h

Modified: incubator/celix/trunk/framework/private/include/manifest_parser.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/manifest_parser.h?rev=1602070&r1=1602069&r2=1602070&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/manifest_parser.h (original)
+++ incubator/celix/trunk/framework/private/include/manifest_parser.h Thu Jun 12 06:27:45 2014
@@ -35,6 +35,7 @@
 typedef struct manifestParser * manifest_parser_pt;
 
 celix_status_t manifestParser_create(module_pt owner, manifest_pt manifest, manifest_parser_pt *manifest_parser);
+celix_status_t manifestParser_destroy(manifest_parser_pt mp);
 
 celix_status_t manifestParser_getSymbolicName(manifest_parser_pt parser, char **symbolicName);
 celix_status_t manifestParser_getBundleVersion(manifest_parser_pt parser, version_pt *version);

Modified: incubator/celix/trunk/framework/private/mock/manifest_parser_mock.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/mock/manifest_parser_mock.c?rev=1602070&r1=1602069&r2=1602070&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/mock/manifest_parser_mock.c (original)
+++ incubator/celix/trunk/framework/private/mock/manifest_parser_mock.c Thu Jun 12 06:27:45 2014
@@ -28,22 +28,27 @@
 #include "manifest_parser.h"
 
 celix_status_t manifestParser_create(module_pt owner, manifest_pt manifest, manifest_parser_pt *manifest_parser) {
-	mock_c()->actualCall("bundle_getCurrentModule");
+	mock_c()->actualCall("manifestParser_create");
 	return mock_c()->returnValue().value.intValue;
 }
 
+celix_status_t manifestParser_destroy(manifest_parser_pt manifest_parser) {
+    mock_c()->actualCall("manifestParser_destroy");
+    return mock_c()->returnValue().value.intValue;
+}
+
 celix_status_t manifestParser_getSymbolicName(manifest_parser_pt parser, char **symbolicName) {
-	mock_c()->actualCall("bundle_getCurrentModule");
+	mock_c()->actualCall("manifestParser_getSymbolicName");
 	return mock_c()->returnValue().value.intValue;
 }
 
 celix_status_t manifestParser_getBundleVersion(manifest_parser_pt parser, version_pt *version) {
-	mock_c()->actualCall("bundle_getCurrentModule");
+	mock_c()->actualCall("manifestParser_getBundleVersion");
 	return mock_c()->returnValue().value.intValue;
 }
 
 celix_status_t manifestParser_getCapabilities(manifest_parser_pt parser, linked_list_pt *capabilities) {
-	mock_c()->actualCall("bundle_getCurrentModule");
+	mock_c()->actualCall("manifestParser_getCapabilities");
 	return mock_c()->returnValue().value.intValue;
 }
 

Modified: incubator/celix/trunk/framework/private/src/bundle_archive.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_archive.c?rev=1602070&r1=1602069&r2=1602070&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_archive.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_archive.c Thu Jun 12 06:27:45 2014
@@ -138,6 +138,12 @@ celix_status_t bundleArchive_destroy(bun
     celix_status_t status = CELIX_SUCCESS;
 
 	if (archive->revisions != NULL) {
+	    linked_list_iterator_pt iter = linkedListIterator_create(archive->revisions, 0);
+	    while(linkedListIterator_hasNext(iter)) {
+            bundle_revision_pt rev = linkedListIterator_next(iter);
+            bundleRevision_destroy(rev);
+	    }
+
 		linkedList_destroy(archive->revisions);
 	}
 	archive = NULL;

Modified: incubator/celix/trunk/framework/private/src/bundle_revision.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_revision.c?rev=1602070&r1=1602069&r2=1602070&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_revision.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_revision.c Thu Jun 12 06:27:45 2014
@@ -78,7 +78,8 @@ celix_status_t bundleRevision_create(fra
 	return status;
 }
 
-celix_status_t bundleRevision_destroy(celix_status_t *revision) {
+celix_status_t bundleRevision_destroy(bundle_revision_pt revision) {
+    arrayList_destroy(revision->libraryHandles);
 	return CELIX_SUCCESS;
 }
 

Modified: incubator/celix/trunk/framework/private/src/framework.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/framework.c?rev=1602070&r1=1602069&r2=1602070&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/framework.c (original)
+++ incubator/celix/trunk/framework/private/src/framework.c Thu Jun 12 06:27:45 2014
@@ -245,9 +245,9 @@ celix_status_t framework_destroy(framewo
 			linkedListIterator_destroy(iter);
 		}
 
-//		if (bundle_getArchive(bundle, &archive) == CELIX_SUCCESS) {
-//			bundleArchive_destroy(archive);
-//		}
+		if (bundle_getArchive(bundle, &archive) == CELIX_SUCCESS) {
+			bundleArchive_destroy(archive);
+		}
 		bundle_destroy(bundle);
 		hashMapIterator_remove(iterator);
 	}

Modified: incubator/celix/trunk/framework/private/src/manifest_parser.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/manifest_parser.c?rev=1602070&r1=1602069&r2=1602070&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/manifest_parser.c (original)
+++ incubator/celix/trunk/framework/private/src/manifest_parser.c Thu Jun 12 06:27:45 2014
@@ -95,6 +95,22 @@ celix_status_t manifestParser_create(mod
 	return status;
 }
 
+celix_status_t manifestParser_destroy(manifest_parser_pt mp) {
+    linkedList_destroy(mp->capabilities);
+    mp->capabilities = NULL;
+    linkedList_destroy(mp->requirements);
+    mp->requirements = NULL;
+    mp->bundleSymbolicName = NULL;
+    version_destroy(mp->bundleVersion);
+    mp->bundleVersion = NULL;
+    mp->manifest = NULL;
+    mp->owner = NULL;
+
+    free(mp);
+
+    return CELIX_SUCCESS;
+}
+
 static linked_list_pt manifestParser_parseDelimitedString(char * value, char * delim) {
     linked_list_pt list;
 
@@ -303,10 +319,13 @@ static linked_list_pt manifestParser_par
             linked_list_pt clause = linkedListIterator_next(iter);
 
             linked_list_pt paths = linkedList_get(clause, 0);
+            linkedList_destroy(paths);
 
             linkedListIterator_remove(iter);
+            linkedList_destroy(clause);
         }
         linkedListIterator_destroy(iter);
+        linkedList_destroy(clauses);
 
 	return requirements;
 }
@@ -351,10 +370,13 @@ static linked_list_pt manifestParser_par
         linked_list_pt clause = linkedListIterator_next(iter);
 
         linked_list_pt paths = linkedList_get(clause, 0);
+        linkedList_destroy(paths);
 
         linkedListIterator_remove(iter);
+        linkedList_destroy(clause);
     }
     linkedListIterator_destroy(iter);
+    linkedList_destroy(clauses);
 
 	return capabilities;
 }

Modified: incubator/celix/trunk/framework/private/src/module.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/module.c?rev=1602070&r1=1602069&r2=1602070&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/module.c (original)
+++ incubator/celix/trunk/framework/private/src/module.c Thu Jun 12 06:27:45 2014
@@ -79,6 +79,8 @@ module_pt module_create(manifest_pt head
             manifestParser_getRequirements(mp, &module->requirements);
 
             module->wires = NULL;
+
+            manifestParser_destroy(mp);
         }
     }
 

Modified: incubator/celix/trunk/framework/public/include/bundle_revision.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/public/include/bundle_revision.h?rev=1602070&r1=1602069&r2=1602070&view=diff
==============================================================================
--- incubator/celix/trunk/framework/public/include/bundle_revision.h (original)
+++ incubator/celix/trunk/framework/public/include/bundle_revision.h Thu Jun 12 06:27:45 2014
@@ -64,6 +64,8 @@ typedef struct bundleRevision * bundle_r
  */
 celix_status_t bundleRevision_create(framework_logger_pt logger, char *root, char *location, long revisionNr, char *inputFile, bundle_revision_pt *bundle_revision);
 
+celix_status_t bundleRevision_destroy(bundle_revision_pt revision);
+
 /**
  * Retrieves the revision number of the given revision.
  *