Przeglądaj źródła

Tidy up the free code in DeleteAllClasses() for CIP class and meta class

Try to make the memory free code in DeleteAllClasses() for CIP class and
meta class more concise.

Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
Stefan Mätje 6 lat temu
rodzic
commit
5273e4d385
1 zmienionych plików z 19 dodań i 26 usunięć
  1. 19 26
      source/src/cip/cipmessagerouter.c

+ 19 - 26
source/src/cip/cipmessagerouter.c

@@ -289,32 +289,25 @@ void DeleteAllClasses(void) {
       CipFree(instance_to_delete);
     }
 
-    /*clear meta class data*/
-    CipFree(
-      message_router_object_to_delete->cip_class->class_instance.cip_class
-      ->class_name);
-    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);
-    CipFree(message_router_object_to_delete->cip_class);
+    /* free meta class data*/
+    CipClass *meta_class =
+      message_router_object_to_delete->cip_class->class_instance.cip_class;
+    CipFree(meta_class->class_name);
+    CipFree(meta_class->services);
+    CipFree(meta_class->get_single_bit_mask);
+    CipFree(meta_class->set_bit_mask);
+    CipFree(meta_class->get_all_bit_mask);
+    CipFree(meta_class);
+
+    /* free class data*/
+    CipClass *cip_class = message_router_object_to_delete->cip_class;
+    CipFree(cip_class->get_single_bit_mask);
+    CipFree(cip_class->set_bit_mask);
+    CipFree(cip_class->get_all_bit_mask);
+    CipFree(cip_class->class_instance.attributes);
+    CipFree(cip_class->services);
+    CipFree(cip_class);
+    /* free message router object */
     CipFree(message_router_object_to_delete);
   }
   g_first_object = NULL;