diff --git a/src/block_alloc.h b/src/block_alloc.h
index b2d8becff10138ae3a1ee9a646a097236c5e999a..4d31a62fd038a38f801c354e2fe45c1e52a9f621 100644
--- a/src/block_alloc.h
+++ b/src/block_alloc.h
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: block_alloc.h,v 1.64 2003/03/15 16:18:32 grubba Exp $
+|| $Id: block_alloc.h,v 1.65 2003/03/16 19:17:07 grubba Exp $
 */
 
 #undef PRE_INIT_BLOCK
@@ -398,6 +398,39 @@ struct DATA *PIKE_CONCAT(find_,DATA)(void *ptr)				     \
   p=PIKE_CONCAT3(really_low_find_,DATA,_unlocked)(ptr, hval);		     \
   DO_IF_RUN_UNLOCKED(mt_unlock(&PIKE_CONCAT(DATA,_mutex)));                  \
   return p;								     \
+}									     \
+									     \
+static inline struct DATA *						     \
+ PIKE_CONCAT3(just_find_,DATA,_unlocked)(void *ptr,			     \
+					 PIKE_HASH_T hval)		     \
+{									     \
+  struct DATA *p,**pp;							     \
+  p=PIKE_CONCAT(DATA,_hash_table)[hval];                                     \
+  if(!p || p->PTR_HASH_ALLOC_DATA == ptr)				     \
+  {                                                                          \
+    DO_IF_RUN_UNLOCKED(mt_unlock(&PIKE_CONCAT(DATA,_mutex)));                \
+    return p;                                                                \
+  }                                                                          \
+  while((p=p->BLOCK_ALLOC_NEXT)) 	                                     \
+  {									     \
+    if(p->PTR_HASH_ALLOC_DATA==ptr) return p;				     \
+  }									     \
+  return 0;								     \
+}									     \
+									     \
+static struct DATA *PIKE_CONCAT(just_find_,DATA)(void *ptr)		     \
+{									     \
+  struct DATA *p;                                                            \
+  PIKE_HASH_T hval = (PIKE_HASH_T)(((char *)ptr)-(char *)0);		     \
+  DO_IF_RUN_UNLOCKED(mt_lock(&PIKE_CONCAT(DATA,_mutex)));                    \
+  if(!PIKE_CONCAT(DATA,_hash_table_size)) {                                  \
+    DO_IF_RUN_UNLOCKED(mt_unlock(&PIKE_CONCAT(DATA,_mutex)));                \
+    return 0;                                                                \
+  }                                                                          \
+  hval %= (PIKE_HASH_T)PIKE_CONCAT(DATA,_hash_table_size);		     \
+  p=PIKE_CONCAT3(just_find_,DATA,_unlocked)(ptr, hval);			     \
+  DO_IF_RUN_UNLOCKED(mt_unlock(&PIKE_CONCAT(DATA,_mutex)));                  \
+  return p;								     \
 }									     \
 									     \
 									     \