From ab61ca51f72d13842b9ecd00134dc4e34815a11a Mon Sep 17 00:00:00 2001 From: Martin Stjernholm <mast@lysator.liu.se> Date: Sun, 16 Dec 2001 19:51:21 +0100 Subject: [PATCH] Do not allow allocations and frees in GC_PASS_LOCATE, which is essentially the same as GC_PASS_CHECK. Rev: src/gc.h:1.89 --- src/gc.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gc.h b/src/gc.h index 0b88b51609..c79f2fdc5a 100644 --- a/src/gc.h +++ b/src/gc.h @@ -1,5 +1,5 @@ /* - * $Id: gc.h,v 1.88 2001/12/10 01:09:31 mast Exp $ + * $Id: gc.h,v 1.89 2001/12/16 18:51:21 mast Exp $ */ #ifndef GC_H #define GC_H @@ -31,7 +31,8 @@ extern void *gc_svalue_location; num_allocs++; \ DO_IF_DEBUG( \ if(d_flag) CHECK_INTERPRETER_LOCK(); \ - if(Pike_in_gc > GC_PASS_PREPARE && Pike_in_gc < GC_PASS_FREE) \ + if((Pike_in_gc > GC_PASS_PREPARE && Pike_in_gc < GC_PASS_FREE) || \ + Pike_in_gc == GC_PASS_LOCATE) \ fatal("Allocating new objects within gc is not allowed!\n"); \ ) \ if (Pike_in_gc) remove_marker(OBJ); \ @@ -57,7 +58,7 @@ extern void *gc_svalue_location; #define GC_FREE_SIMPLE_BLOCK(PTR) do { \ extern int d_flag; \ if(d_flag) CHECK_INTERPRETER_LOCK(); \ - if (Pike_in_gc == GC_PASS_CHECK) \ + if (Pike_in_gc == GC_PASS_CHECK || Pike_in_gc == GC_PASS_LOCATE) \ fatal("No free is allowed in this gc pass.\n"); \ else \ remove_marker(PTR); \ @@ -68,7 +69,8 @@ extern void *gc_svalue_location; #define GC_FREE_BLOCK(PTR) do { \ extern int d_flag; \ if(d_flag) CHECK_INTERPRETER_LOCK(); \ - if (Pike_in_gc > GC_PASS_PREPARE && Pike_in_gc < GC_PASS_FREE) \ + if ((Pike_in_gc > GC_PASS_PREPARE && Pike_in_gc < GC_PASS_FREE) || \ + Pike_in_gc == GC_PASS_LOCATE) \ fatal("Freeing objects within gc is not allowed.\n"); \ } while (0) -- GitLab