about summary refs log tree commit diff
path: root/Src/mem.c
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2006-03-06 15:38:59 +0000
committerBart Schaefer <barts@users.sourceforge.net>2006-03-06 15:38:59 +0000
commit20aae107b8e662a1a484eb7b22fe3155a3a92c7b (patch)
tree947658cc5bff668b16306b805faa9f48e8488bb3 /Src/mem.c
parente43a5fc8ea0725501c6d743df4432cd8879d943b (diff)
downloadzsh-20aae107b8e662a1a484eb7b22fe3155a3a92c7b.tar.gz
zsh-20aae107b8e662a1a484eb7b22fe3155a3a92c7b.tar.xz
zsh-20aae107b8e662a1a484eb7b22fe3155a3a92c7b.zip
22321: optimize 22318.
Diffstat (limited to 'Src/mem.c')
-rw-r--r--Src/mem.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/Src/mem.c b/Src/mem.c
index 499f7d7e4..bcdd1efe9 100644
--- a/Src/mem.c
+++ b/Src/mem.c
@@ -329,6 +329,21 @@ mmap_heap_alloc(size_t *n)
 }
 #endif
 
+/* check whether a pointer is within a memory pool */
+
+/**/
+mod_export void *
+zheapptr(void *p)
+{
+    Heap h;
+    queue_signals();
+    for (h = heaps; h; h = h->next)
+	if ((char *)p >= arena(h) &&
+	    (char *)p + H_ISIZE < arena(h) + ARENA_SIZEOF(h))
+	    break;
+    unqueue_signals();
+    return (h ? p : 0);
+}
 
 /* allocate memory from the current memory pool */