Author: bpetri
Date: Mon Dec  8 18:17:38 2014
New Revision: 1643876

URL: http://svn.apache.org/r1643876
Log:
CELIX-119: fixed minor memory-leaks in log_service and log_writer

Modified:
    celix/trunk/log_service/private/include/log.h
    celix/trunk/log_service/private/include/log_factory.h
    celix/trunk/log_service/private/src/log.c
    celix/trunk/log_service/private/src/log_service_activator.c
    celix/trunk/log_writer/log_writer/private/src/log_writer.c
    celix/trunk/shell/private/src/log_command.c

Modified: celix/trunk/log_service/private/include/log.h
URL: 
http://svn.apache.org/viewvc/celix/trunk/log_service/private/include/log.h?rev=1643876&r1=1643875&r2=1643876&view=diff
==============================================================================
--- celix/trunk/log_service/private/include/log.h (original)
+++ celix/trunk/log_service/private/include/log.h Mon Dec  8 18:17:38 2014
@@ -34,6 +34,7 @@
 typedef struct log * log_pt;
 
 celix_status_t log_create(log_pt *logger);
+celix_status_t log_destroy(log_pt logger);
 celix_status_t log_addEntry(log_pt log, log_entry_pt entry);
 celix_status_t log_getEntries(log_pt log, linked_list_pt *list);
 

Modified: celix/trunk/log_service/private/include/log_factory.h
URL: 
http://svn.apache.org/viewvc/celix/trunk/log_service/private/include/log_factory.h?rev=1643876&r1=1643875&r2=1643876&view=diff
==============================================================================
--- celix/trunk/log_service/private/include/log_factory.h (original)
+++ celix/trunk/log_service/private/include/log_factory.h Mon Dec  8 18:17:38 
2014
@@ -32,6 +32,7 @@
 typedef struct log_service_factory * log_service_factory_pt;
 
 celix_status_t logFactory_create(log_pt log, service_factory_pt *factory);
+celix_status_t logFactory_destroy(service_factory_pt *factory);
 celix_status_t logFactory_getService(void *factory, bundle_pt bundle, 
service_registration_pt registration, void **service);
 celix_status_t logFactory_ungetService(void *factory, bundle_pt bundle, 
service_registration_pt registration);
 

Modified: celix/trunk/log_service/private/src/log.c
URL: 
http://svn.apache.org/viewvc/celix/trunk/log_service/private/src/log.c?rev=1643876&r1=1643875&r2=1643876&view=diff
==============================================================================
--- celix/trunk/log_service/private/src/log.c (original)
+++ celix/trunk/log_service/private/src/log.c Mon Dec  8 18:17:38 2014
@@ -85,23 +85,26 @@ celix_status_t log_create(log_pt *logger
        return status;
 }
 
-celix_status_t log_destroy(void *logp) {
+celix_status_t log_destroy(log_pt logger) {
        celix_status_t status = CELIX_SUCCESS;
-       log_pt log = logp;
 
-       celixThreadMutex_destroy(&log->listenerLock);
-       celixThreadMutex_destroy(&log->deliverLock);
+       celixThreadMutex_destroy(&logger->listenerLock);
+       celixThreadMutex_destroy(&logger->deliverLock);
 
-       arrayList_destroy(log->listenerEntries);
-       arrayList_destroy(log->listeners);
-       linked_list_iterator_pt iter = linkedListIterator_create(log->entries, 
0);
+       arrayList_destroy(logger->listenerEntries);
+       arrayList_destroy(logger->listeners);
+       linked_list_iterator_pt iter = 
linkedListIterator_create(logger->entries, 0);
        while (linkedListIterator_hasNext(iter)) {
            log_entry_pt entry = linkedListIterator_next(iter);
            logEntry_destroy(&entry);
        }
-       linkedList_destroy(log->entries);
+       linkedListIterator_destroy(iter);
 
-       celixThreadMutex_destroy(&log->lock);
+       linkedList_destroy(logger->entries);
+
+       celixThreadMutex_destroy(&logger->lock);
+
+       free(logger);
 
        return status;
 }

Modified: celix/trunk/log_service/private/src/log_service_activator.c
URL: 
http://svn.apache.org/viewvc/celix/trunk/log_service/private/src/log_service_activator.c?rev=1643876&r1=1643875&r2=1643876&view=diff
==============================================================================
--- celix/trunk/log_service/private/src/log_service_activator.c (original)
+++ celix/trunk/log_service/private/src/log_service_activator.c Mon Dec  8 
18:17:38 2014
@@ -119,12 +119,15 @@ celix_status_t bundleActivator_stop(void
     logReaderService_destroy(&activator->reader);
        free(activator->reader_service);
 
-       // logFactory_destroy(activator->factory);
+       logFactory_destroy(&activator->factory);
 
        bundleContext_removeBundleListener(context, activator->bundleListener);
        bundleContext_removeFrameworkListener(context, 
activator->frameworkListener);
 
-       // log_destroy(activator->logger);
+       free(activator->bundleListener);
+       free(activator->frameworkListener);
+
+       log_destroy(activator->logger);
 
     return CELIX_SUCCESS;
 }

Modified: celix/trunk/log_writer/log_writer/private/src/log_writer.c
URL: 
http://svn.apache.org/viewvc/celix/trunk/log_writer/log_writer/private/src/log_writer.c?rev=1643876&r1=1643875&r2=1643876&view=diff
==============================================================================
--- celix/trunk/log_writer/log_writer/private/src/log_writer.c (original)
+++ celix/trunk/log_writer/log_writer/private/src/log_writer.c Mon Dec  8 
18:17:38 2014
@@ -78,7 +78,16 @@ celix_status_t logWriter_start(log_write
 }
 
 celix_status_t logWriter_stop(log_writer_pt writer) {
-       return serviceTracker_close(writer->tracker);
+       celix_status_t status = CELIX_SUCCESS;
+
+       if (serviceTracker_close(writer->tracker) != CELIX_SUCCESS) {
+               status = CELIX_BUNDLE_EXCEPTION;
+       }
+       if (serviceTracker_destroy(writer->tracker) != CELIX_SUCCESS) {
+               status = CELIX_BUNDLE_EXCEPTION;
+       }
+
+       return status;
 }
 
 celix_status_t logWriter_addingServ(void * handle, service_reference_pt ref, 
void **service) {

Modified: celix/trunk/shell/private/src/log_command.c
URL: 
http://svn.apache.org/viewvc/celix/trunk/shell/private/src/log_command.c?rev=1643876&r1=1643875&r2=1643876&view=diff
==============================================================================
--- celix/trunk/shell/private/src/log_command.c (original)
+++ celix/trunk/shell/private/src/log_command.c Mon Dec  8 18:17:38 2014
@@ -90,9 +90,9 @@ void logCommand_execute(command_pt comma
                        }
                }
                linkedListIterator_destroy(iter);
+               linkedList_destroy(list);
                bool result = true;
                bundleContext_ungetService(command->bundleContext, 
readerService, &result);
-
         bundleContext_ungetServiceReference(command->bundleContext, 
readerService);
     } else {
         out("No log reader available\n");


Reply via email to