cvs: php4 /ext/sysvshm sysvshm.c
| From: | Gavin Sherry | Date: | Tue, 15 May 2001 07:32:34 +0000 |
| Subject: | cvs: php4 /ext/sysvshm sysvshm.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-5755@lists.php.net to get a copy of this message | ||
swm Tue May 15 00:32:34 2001 EDT
Modified files:
/php4/ext/sysvshm sysvshm.c
Log:
fixed shm_remove to expect the correct argument.
Index: php4/ext/sysvshm/sysvshm.c
diff -u php4/ext/sysvshm/sysvshm.c:1.36 php4/ext/sysvshm/sysvshm.c:1.37
--- php4/ext/sysvshm/sysvshm.c:1.36 Sun Feb 25 22:07:25 2001
+++ php4/ext/sysvshm/sysvshm.c Tue May 15 00:32:34 2001
@@ -16,9 +16,11 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sysvshm.c,v 1.36 2001/02/26 06:07:25 andi Exp $ */
+/* $Id: sysvshm.c,v 1.37 2001/05/15 07:32:34 swm Exp $ */
-/* This has been built and tested on Solaris 2.6.
+/* This has been built and tested on Linux 2.2.14
+ *
+ * This has been built and tested on Solaris 2.6.
* It may not compile or execute correctly on other systems.
*/
@@ -173,26 +175,25 @@
/* }}} */
/* {{{ proto int shm_remove(int shm_identifier)
Removes shared memory from Unix systems */
+
PHP_FUNCTION(shm_remove)
{
- pval **arg_key;
+ pval **arg_id;
long id;
- key_t key;
+ int type;
+ sysvshm_shm *shm_list_ptr;
- if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg_key) == FAILURE) {
+ if(ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg_id) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(arg_key);
+ convert_to_long_ex(arg_id);
- key = (*arg_key)->value.lval;
+ id = (*arg_id)->value.lval;
- if((id=shmget(key,0,0))<0) {
- php_error(E_WARNING, "%d is not a existing SysV shared memory key", key);
- RETURN_FALSE;
- }
- if(shmctl(id,IPC_RMID,NULL)<0) {
- php_error(E_WARNING, "shm_remove() failed for key 0x%x: %s", key, strerror(errno));
+ shm_list_ptr = (sysvshm_shm *) zend_list_find(id, &type);
+ if(shmctl(shm_list_ptr->id,IPC_RMID,NULL)<0) {
+ php_error(E_WARNING, "shm_remove() failed for key 0x%x, id %i: %s",
shm_list_ptr->key, id,strerror(errno));
RETURN_FALSE;
}