Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix a memory leak.
authorthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 16 Jun 2006 14:01:46 +0000 (14:01 +0000)
committerthiery <thiery@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 16 Jun 2006 14:01:46 +0000 (14:01 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2385 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/simdag/private.h
src/simdag/sd_workstation.c

index cd71a5a..c3d0f13 100644 (file)
@@ -34,6 +34,6 @@ SD_link_t __SD_link_create(const char *name, void *surf_link, void *data);
 void __SD_link_destroy(SD_link_t link);
 
 SD_workstation_t __SD_workstation_create(void *surf_workstation, void *data);
 void __SD_link_destroy(SD_link_t link);
 
 SD_workstation_t __SD_workstation_create(void *surf_workstation, void *data);
-void __SD_workstation_destroy(SD_workstation_t workstation);
+void __SD_workstation_destroy(void *workstation);
 
 #endif
 
 #endif
index f2c7afe..5fec503 100644 (file)
@@ -17,7 +17,7 @@ SD_workstation_t __SD_workstation_create(void *surf_workstation, void *data) {
   workstation->sd_data = sd_data; /* private data */
   
   const char *name = SD_workstation_get_name(workstation);
   workstation->sd_data = sd_data; /* private data */
   
   const char *name = SD_workstation_get_name(workstation);
-  xbt_dict_set(sd_global->workstations, name, workstation, free); /* add the workstation to the dictionary */
+  xbt_dict_set(sd_global->workstations, name, workstation, __SD_workstation_destroy); /* add the workstation to the dictionary */
 
   /* TODO: route */
   return workstation;
 
   /* TODO: route */
   return workstation;
@@ -116,12 +116,12 @@ double SD_workstation_get_available_power(SD_workstation_t workstation) {
 
 /* Destroys a workstation. The user data (if any) should have been destroyed first.
  */
 
 /* Destroys a workstation. The user data (if any) should have been destroyed first.
  */
-void __SD_workstation_destroy(SD_workstation_t workstation) {
+void __SD_workstation_destroy(void *workstation) {
   CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
 
   CHECK_INIT_DONE();
   xbt_assert0(workstation != NULL, "Invalid parameter");
 
-  if (workstation->sd_data != NULL) {
-    xbt_free(workstation->sd_data);
+  if (((SD_workstation_t) workstation)->sd_data != NULL) {
+    xbt_free(((SD_workstation_t) workstation)->sd_data);
   }
   
   /* TODO: route */
   }
   
   /* TODO: route */