From 488dd54cbc91fad4cb04c9d0e92609a107ad1568 Mon Sep 17 00:00:00 2001 From: paul bedaride Date: Thu, 15 Nov 2012 15:24:29 +0100 Subject: [PATCH] Fix TestSuite.msg-file --- src/surf/storage.c | 11 +++++++++++ src/surf/storage_private.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/src/surf/storage.c b/src/surf/storage.c index cf54feb376..268f141837 100644 --- a/src/surf/storage.c +++ b/src/surf/storage.c @@ -140,6 +140,16 @@ static surf_action_t storage_action_close(void *storage, surf_file_t fp) { char *filename = fp->name; XBT_DEBUG("\tClose file '%s' size '%f'",filename,fp->content->stat.size); + // unref write actions from storage + surf_action_storage_t write_action; + unsigned int i; + xbt_dynar_foreach(((storage_t)storage)->write_actions,i,write_action) { + if ((write_action->generic_lmm_action.generic_action.file) == fp) { + xbt_dynar_cursor_rm(((storage_t)storage)->write_actions, &i); + storage_action_unref((surf_action_t) write_action); + } + } + free(fp->name); fp->content = NULL; xbt_free(fp); @@ -209,6 +219,7 @@ static surf_action_t storage_action_execute (void *storage, double size, e_surf_ lmm_expand(storage_maxmin_system, STORAGE->constraint_write, GENERIC_LMM_ACTION(action).variable, 1.0); xbt_dynar_push(((storage_t)storage)->write_actions,&action); + surf_action_ref((surf_action_t) action); break; } action->type = type; diff --git a/src/surf/storage_private.h b/src/surf/storage_private.h index c62f265fe8..e41cde0e18 100644 --- a/src/surf/storage_private.h +++ b/src/surf/storage_private.h @@ -54,4 +54,6 @@ typedef struct surf_action_storage { void *storage; } s_surf_action_storage_t, *surf_action_storage_t; +static int storage_action_unref(surf_action_t action); + #endif /* STORAGE_PRIVATE_H_ */ -- 2.20.1