Просмотр исходного кода

Fix: DeleteAllClasses() did not free the attribute bit masks

DeleteAllClasses() function did not free the bit masks previously allocated
by AllocateAttributeMasks() in CreateCipClass(). This patch fixes this
memory leak.

Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
Stefan Mätje 6 лет назад
Родитель
Сommit
4be8c7e5ce
1 измененных файлов с 12 добавлено и 0 удалено
  1. 12 0
      source/src/cip/cipmessagerouter.c

+ 12 - 0
source/src/cip/cipmessagerouter.c

@@ -301,9 +301,21 @@ void DeleteAllClasses(void) {
     CipFree(
       message_router_object_to_delete->cip_class->class_instance.cip_class
       ->services);
+    CipFree(
+      message_router_object_to_delete->cip_class->class_instance.cip_class
+      ->get_single_bit_mask);
+    CipFree(
+      message_router_object_to_delete->cip_class->class_instance.cip_class
+      ->set_bit_mask);
+    CipFree(
+      message_router_object_to_delete->cip_class->class_instance.cip_class
+      ->get_all_bit_mask);
     CipFree(
       message_router_object_to_delete->cip_class->class_instance.cip_class);
     /*clear class data*/
+    CipFree(message_router_object_to_delete->cip_class->get_single_bit_mask);
+    CipFree(message_router_object_to_delete->cip_class->set_bit_mask);
+    CipFree(message_router_object_to_delete->cip_class->get_all_bit_mask);
     CipFree(
       message_router_object_to_delete->cip_class->class_instance.attributes);
     CipFree(message_router_object_to_delete->cip_class->services);