Skip to content
Snippets Groups Projects
Commit 819b1fc5 authored by Fredrik Hübinette (Hubbe)'s avatar Fredrik Hübinette (Hubbe)
Browse files

bugfix (again)

Rev: src/block_alloc.h:1.9
parent c38edefc
No related branches found
No related tags found
No related merge requests found
/* $Id: block_alloc.h,v 1.8 1999/04/02 19:38:35 hubbe Exp $ */ /* $Id: block_alloc.h,v 1.9 1999/04/02 20:53:12 hubbe Exp $ */
#undef PRE_INIT_BLOCK #undef PRE_INIT_BLOCK
#undef INIT_BLOCK #undef INIT_BLOCK
#undef EXIT_BLOCK #undef EXIT_BLOCK
...@@ -109,7 +109,7 @@ struct DATA *PIKE_CONCAT(find_,DATA)(void *ptr) \ ...@@ -109,7 +109,7 @@ struct DATA *PIKE_CONCAT(find_,DATA)(void *ptr) \
\ \
\ \
\ \
inline struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \ struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \
{ \ { \
struct DATA *p; \ struct DATA *p; \
\ \
...@@ -119,8 +119,7 @@ inline struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \ ...@@ -119,8 +119,7 @@ inline struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \
PIKE_CONCAT(DATA,_hash_table_size)) \ PIKE_CONCAT(DATA,_hash_table_size)) \
{ \ { \
/* Time to re-hash */ \ /* Time to re-hash */ \
struct DATA **PIKE_CONCAT(DATA,_hash_table_old)= \ struct DATA **old_hash= PIKE_CONCAT(DATA,_hash_table); \
PIKE_CONCAT(DATA,_hash_table); \
int e=PIKE_CONCAT(DATA,_hash_table_size); \ int e=PIKE_CONCAT(DATA,_hash_table_size); \
\ \
PIKE_CONCAT(DATA,_hash_table_size)*=2; \ PIKE_CONCAT(DATA,_hash_table_size)*=2; \
...@@ -133,9 +132,9 @@ inline struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \ ...@@ -133,9 +132,9 @@ inline struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \
sizeof(struct DATA *)*PIKE_CONCAT(DATA,_hash_table_size)); \ sizeof(struct DATA *)*PIKE_CONCAT(DATA,_hash_table_size)); \
while(e-- >=0) \ while(e-- >=0) \
{ \ { \
while((p=PIKE_CONCAT(DATA,_hash_table_old)[e])) \ while((p=old_hash[e])) \
{ \ { \
PIKE_CONCAT(DATA,_hash_table_old)[e]=p->next; \ old_hash[e]=p->next; \
hval=(long)(p-> data); \ hval=(long)(p-> data); \
hval%=PIKE_CONCAT(DATA,_hash_table_size); \ hval%=PIKE_CONCAT(DATA,_hash_table_size); \
p->next=PIKE_CONCAT(DATA,_hash_table)[hval]; \ p->next=PIKE_CONCAT(DATA,_hash_table)[hval]; \
...@@ -144,13 +143,15 @@ inline struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \ ...@@ -144,13 +143,15 @@ inline struct DATA *PIKE_CONCAT(make_,DATA)(void *ptr, int hval) \
} \ } \
hval=(long)ptr; \ hval=(long)ptr; \
hval%=PIKE_CONCAT(DATA,_hash_table_size); \ hval%=PIKE_CONCAT(DATA,_hash_table_size); \
free((char *)old_hash);\
}else{ \ }else{ \
PIKE_CONCAT(DATA,_hash_table)=PIKE_CONCAT(DATA,_hash_table_old); \ PIKE_CONCAT(DATA,_hash_table)=old_hash; \
PIKE_CONCAT(DATA,_hash_table_size)=e; \ PIKE_CONCAT(DATA,_hash_table_size)=e; \
} \ } \
} \ } \
\ \
p=PIKE_CONCAT(alloc_,DATA)(); \ p=PIKE_CONCAT(alloc_,DATA)(); \
p->data=ptr; \
p->next=PIKE_CONCAT(DATA,_hash_table)[hval]; \ p->next=PIKE_CONCAT(DATA,_hash_table)[hval]; \
PIKE_CONCAT(DATA,_hash_table)[hval]=p; \ PIKE_CONCAT(DATA,_hash_table)[hval]=p; \
return p; \ return p; \
...@@ -187,8 +188,9 @@ int PIKE_CONCAT(remove_,DATA)(void *ptr) \ ...@@ -187,8 +188,9 @@ int PIKE_CONCAT(remove_,DATA)(void *ptr) \
if((p=PIKE_CONCAT(really_low_find_,DATA)(ptr, hval))) \ if((p=PIKE_CONCAT(really_low_find_,DATA)(ptr, hval))) \
{ \ { \
PIKE_CONCAT(num_,DATA)--; \ PIKE_CONCAT(num_,DATA)--; \
if(PIKE_CONCAT(DATA,_hash_table)[hval]!=p) fatal("GAOssdf\n"); \
PIKE_CONCAT(DATA,_hash_table)[hval]=p->next; \ PIKE_CONCAT(DATA,_hash_table)[hval]=p->next; \
PIKE_CONCAT(really_free_,DATA)(p); \ PIKE_CONCAT(really_free_,DATA)(p); \
return 1; \ return 1; \
} \ } \
return 0; \ return 0; \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment