CELIX-347: Remove several mem leaks in dependency manager.

Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/88a7da2d
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/88a7da2d
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/88a7da2d

Branch: refs/heads/release/celix-2.0.0
Commit: 88a7da2d88152c005af35b45e04eeecf68128ab6
Parents: 492c214
Author: Pepijn Noltes <[email protected]>
Authored: Wed Feb 10 08:41:35 2016 +0100
Committer: Pepijn Noltes <[email protected]>
Committed: Wed Feb 10 08:41:35 2016 +0100

----------------------------------------------------------------------
 .../private/src/dm_service_dependency.c           | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/88a7da2d/dependency_manager/private/src/dm_service_dependency.c
----------------------------------------------------------------------
diff --git a/dependency_manager/private/src/dm_service_dependency.c 
b/dependency_manager/private/src/dm_service_dependency.c
index a92bfbf..11ea28b 100644
--- a/dependency_manager/private/src/dm_service_dependency.c
+++ b/dependency_manager/private/src/dm_service_dependency.c
@@ -163,7 +163,7 @@ celix_status_t 
serviceDependency_setService(dm_service_dependency_pt dependency,
         }
 
         if (serviceVersionRange != NULL) {
-            version_range_pt versionRange;
+            version_range_pt versionRange = NULL;
 
             if (versionRange_parse(serviceVersionRange, &versionRange) == 
CELIX_SUCCESS) {
                 version_pt lowVersion = NULL;
@@ -172,7 +172,7 @@ celix_status_t 
serviceDependency_setService(dm_service_dependency_pt dependency,
                 if ((versionRange_getHighVersion(versionRange, &highVersion) 
== CELIX_SUCCESS) && (highVersion != NULL)) {
                     bool isHighInclusive;
                     char* highOperator;
-                    char* highVersionStr;
+                    char* highVersionStr = NULL;
 
                     versionRange_isHighInclusive(versionRange, 
&isHighInclusive);
                     version_toString(highVersion, &highVersionStr);
@@ -183,12 +183,16 @@ celix_status_t 
serviceDependency_setService(dm_service_dependency_pt dependency,
                     char serviceVersionFilter[len];
                     snprintf(serviceVersionFilter, len, "(%s%s%s)", 
CELIX_FRAMEWORK_SERVICE_VERSION, highOperator, highVersionStr);
                     arrayList_add(filterElements, 
strdup(serviceVersionFilter));
+
+                    if(highVersionStr!=NULL){
+                       free(highVersionStr);
+                    }
                 }
 
                 if ((versionRange_getLowVersion(versionRange, &lowVersion) == 
CELIX_SUCCESS) && (lowVersion != NULL)) {
                     bool isLowInclusive;
                     char* lowOperator;
-                    char* lowVersionStr;
+                    char* lowVersionStr = NULL;
 
                     versionRange_isLowInclusive(versionRange, &isLowInclusive);
                     version_toString(lowVersion, &lowVersionStr);
@@ -199,8 +203,16 @@ celix_status_t 
serviceDependency_setService(dm_service_dependency_pt dependency,
                     char serviceVersionFilter[len];
                     snprintf(serviceVersionFilter, len, "(%s%s%s)", 
CELIX_FRAMEWORK_SERVICE_VERSION, lowOperator, lowVersionStr);
                     arrayList_add(filterElements, 
strdup(serviceVersionFilter));
+
+                    if(lowVersionStr!=NULL){
+                       free(lowVersionStr);
+                    }
                 }
             }
+
+            if(versionRange!=NULL){
+               versionRange_destroy(versionRange);
+            }
         }
 
         if (filter != NULL) {

Reply via email to