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

Issue#185: Memory double-free in multi-instance classes
* Corrected memory free operation for multi instance classes.

avideep 6 лет назад
Родитель
Сommit
88038c4739
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      source/src/cip/cipmessagerouter.c

+ 6 - 1
source/src/cip/cipmessagerouter.c

@@ -286,9 +286,14 @@ void DeleteAllClasses(void) {
       { /* then free storage for the attribute array */
         CipFree(instance_to_delete->attributes);
       }
-      CipFree(instance_to_delete);
     }
 
+	/*All instances memory are allocated in cip_class->instances pointer,so we have to free them in one go*/
+      if( message_router_object_to_delete->cip_class->instances != NULL)
+      {
+        CipFree(message_router_object_to_delete->cip_class->instances);
+      }
+
     /*clear meta class data*/
     CipFree(
       message_router_object_to_delete->cip_class->class_instance.cip_class