Author: bpetri
Date: Wed Dec 10 18:36:55 2014
New Revision: 1644502

URL: http://svn.apache.org/r1644502
Log:
CELIX-190: fixed minor memory leak

Modified:
    
celix/trunk/remote_services/discovery/private/src/endpoint_discovery_poller.c
    celix/trunk/remote_services/topology_manager/private/src/activator.c

Modified: 
celix/trunk/remote_services/discovery/private/src/endpoint_discovery_poller.c
URL: 
http://svn.apache.org/viewvc/celix/trunk/remote_services/discovery/private/src/endpoint_discovery_poller.c?rev=1644502&r1=1644501&r2=1644502&view=diff
==============================================================================
--- 
celix/trunk/remote_services/discovery/private/src/endpoint_discovery_poller.c 
(original)
+++ 
celix/trunk/remote_services/discovery/private/src/endpoint_discovery_poller.c 
Wed Dec 10 18:36:55 2014
@@ -190,17 +190,16 @@ celix_status_t endpointDiscoveryPoller_r
         return CELIX_BUNDLE_EXCEPTION;
     }
 
-    hash_map_entry_pt endpointEntry = hashMap_remove(poller->entries, url);
-
-    free(hashMapEntry_getKey(endpointEntry));
-    array_list_pt entries = hashMapEntry_getValue(endpointEntry);
+    array_list_pt entries = hashMap_remove(poller->entries, url);
 
        for (int i = 0; i < arrayList_size(entries); i++) {
                endpoint_description_pt endpoint = arrayList_get(entries, i);
-
                discovery_removeDiscoveredEndpoint(poller->discovery, endpoint);
        }
-       arrayList_destroy(entries);
+
+       if (entries != NULL) {
+               arrayList_destroy(entries);
+       }
 
        status = celixThreadMutex_unlock(&poller->pollerLock);
 

Modified: celix/trunk/remote_services/topology_manager/private/src/activator.c
URL: 
http://svn.apache.org/viewvc/celix/trunk/remote_services/topology_manager/private/src/activator.c?rev=1644502&r1=1644501&r2=1644502&view=diff
==============================================================================
--- celix/trunk/remote_services/topology_manager/private/src/activator.c 
(original)
+++ celix/trunk/remote_services/topology_manager/private/src/activator.c Wed 
Dec 10 18:36:55 2014
@@ -57,6 +57,7 @@ celix_status_t bundleActivator_create(bu
        struct activator *activator = NULL;
 
        activator = malloc(sizeof(struct activator));
+
        if (!activator) {
                return CELIX_ENOMEM;
        }
@@ -173,6 +174,7 @@ celix_status_t bundleActivator_stop(void
        struct activator *activator = userData;
 
        serviceTracker_close(activator->remoteServiceAdminTracker);
+       serviceTracker_destroy(activator->remoteServiceAdminTracker);
 
        bundleContext_removeServiceListener(context, 
activator->serviceListener);
 
@@ -183,10 +185,16 @@ celix_status_t bundleActivator_stop(void
 }
 
 celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt 
context) {
+       celix_status_t status = CELIX_SUCCESS;
+
        struct activator *activator = userData;
        if (!activator || !activator->manager) {
-               return CELIX_BUNDLE_EXCEPTION;
+               status = CELIX_BUNDLE_EXCEPTION;
+       }
+       else {
+               status = topologyManager_destroy(activator->manager);
+               free(activator);
        }
 
-       return topologyManager_destroy(activator->manager);
+       return status;
 }


Reply via email to