diff --git a/src/dmalloc.h b/src/dmalloc.h index 28ff3a42c506660b572111df9b6a8d8252234999..db1b8f6804396f7bfdde3a8554a854f41713a4f1 100644 --- a/src/dmalloc.h +++ b/src/dmalloc.h @@ -1,5 +1,5 @@ /* - * $Id: dmalloc.h,v 1.26 2000/08/04 01:32:39 hubbe Exp $ + * $Id: dmalloc.h,v 1.27 2000/09/02 23:11:27 mast Exp $ */ extern char *debug_xalloc(size_t); @@ -80,6 +80,7 @@ void dmalloc_add_mmap_entry(struct memory_map *m, int count, struct memory_map *recur, int recur_offset); +int dmalloc_is_invalid_memory_block(void *block); #else diff --git a/src/pike_memory.c b/src/pike_memory.c index 96608188a5bb9400e42ef8331dcf00cc7e00e7e5..acb722b8feaa75ee2f01cc34d2b1bbf8229bc624 100644 --- a/src/pike_memory.c +++ b/src/pike_memory.c @@ -10,7 +10,7 @@ #include "pike_macros.h" #include "gc.h" -RCSID("$Id: pike_memory.c,v 1.80 2000/08/16 15:51:20 grubba Exp $"); +RCSID("$Id: pike_memory.c,v 1.81 2000/09/02 23:11:27 mast Exp $"); /* strdup() is used by several modules, so let's provide it */ #ifndef HAVE_STRDUP @@ -2245,4 +2245,12 @@ void dmalloc_add_mmap_entry(struct memory_map *m, mt_unlock(&debug_malloc_mutex); } +int dmalloc_is_invalid_memory_block(void *block) +{ + struct memhdr *mh=my_find_memhdr(block,0); + if(!mh) return -1; /* no such known block */ + if(mh->size < 0) return -2; /* block has been freed */ + return 0; /* block is valid */ +} + #endif