Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
change free be xbt_free_f
[simgrid.git] / src / xbt / context.c
index 6ea5172..9b0fc97 100644 (file)
@@ -13,7 +13,6 @@
 #include "context_private.h"
 #include "xbt/log.h"
 #include "xbt/dynar.h"
-#include "gras_config.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ctx, xbt, "Context");
 
@@ -101,6 +100,12 @@ static void xbt_context_destroy(xbt_context_t context)
   pthread_cond_destroy(&(context->cond));
 #endif
   if(context->exception) free(context->exception);
+       
+#ifdef USE_WIN_CONTEXT         
+  if(context->uc.uc_stack.ss_sp)
+    free (context->uc.uc_stack.ss_sp);
+#endif
+       
   free(context);
   return;
 }
@@ -279,7 +284,10 @@ xbt_context_t xbt_context_new(xbt_context_function_t code,
   /* WARNING : when this context is over, the current_context (i.e. the 
      father), is awaken... Theorically, the wrapper should prevent using 
      this feature. */
-# ifndef USE_WIN_CONTEXT    
+# ifdef USE_WIN_CONTEXT    
+  res->uc.uc_stack.ss_sp = xbt_malloc(STACK_SIZE);
+  res->uc.uc_stack.ss_size = STACK_SIZE ;
+#else
   res->uc.uc_stack.ss_sp = pth_skaddr_makecontext(res->stack,STACK_SIZE);
   res->uc.uc_stack.ss_size = pth_sksize_makecontext(res->stack,STACK_SIZE);
 # endif /* USE_WIN_CONTEXT */