Ver código fonte

file_out: Free allocated memory

Xenofon Karamanos 1 ano atrás
pai
commit
22581f9569

+ 10 - 0
src/modules/file_out/file_out.c

@@ -183,6 +183,16 @@ static void destroy(void)
 			ERR("Failed to close output file");
 		}
 	}
+
+	/* Free allocated mem */
+	if(fo_number_of_files != NULL) {
+		shm_free(fo_number_of_files);
+		fo_number_of_files = NULL;
+	}
+
+	if(fo_queue != NULL) {
+		fo_free_queue(fo_queue);
+	}
 }
 
 static void fo_log_writer_process(int rank)

+ 9 - 0
src/modules/file_out/types.c

@@ -113,3 +113,12 @@ int fo_queue_size(fo_queue_t *q)
 	lock_release(&(q->lock));
 	return count;
 }
+
+void fo_free_queue(fo_queue_t *q)
+{
+	fo_log_message_t data;
+	while(fo_dequeue(q, &data) > 0) {
+		shm_free(data.message);
+	}
+	shm_free(q);
+}

+ 1 - 0
src/modules/file_out/types.h

@@ -43,3 +43,4 @@ int fo_enqueue(fo_queue_t *q, fo_log_message_t data);
 int fo_dequeue(fo_queue_t *q, fo_log_message_t *data);
 int fo_is_queue_empty(fo_queue_t *q);
 int fo_queue_size(fo_queue_t *q);
+void fo_free_queue(fo_queue_t *q);