diff options
-rw-r--r-- | ext/sysvshm/sysvshm.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c index eeacad9d7f..c42f612fa4 100644 --- a/ext/sysvshm/sysvshm.c +++ b/ext/sysvshm/sysvshm.c @@ -354,14 +354,15 @@ int php_put_shm_data(sysvshm_chunk_head *ptr,long key,char *data, long len) { long shm_varpos; total_size=((long)(len+sizeof(sysvshm_chunk)-1)/4)*4+4; /* 4-byte alligment */ + + if((shm_varpos=php_check_shm_data(ptr,key))>0) { + php_remove_shm_data(ptr, shm_varpos); + } if(ptr->free<total_size) { return -1; /* not enough memeory */ } - if((shm_varpos=php_check_shm_data(ptr,key))>0) { - php_remove_shm_data(ptr, shm_varpos); - } shm_var=(sysvshm_chunk*)((char *)ptr+ptr->end); shm_var->key=key; shm_var->length=len; |