]> granicus.if.org Git - php/commitdiff
AIX wants the value, not the pointer to the value.
authorSascha Schumann <sas@php.net>
Wed, 25 Aug 1999 16:53:57 +0000 (16:53 +0000)
committerSascha Schumann <sas@php.net>
Wed, 25 Aug 1999 16:53:57 +0000 (16:53 +0000)
Fixes #2149

ext/sysvsem/sysvsem.c

index 05c6a8b5e424440527a3e95d93be81e858cf21d9..a15bf6bcdb4f8b8169c838a5c2084b4d4c040fe4 100644 (file)
@@ -121,6 +121,11 @@ int php3_minit_sysvsem(INIT_FUNC_ARGS)
        return SUCCESS;
 }
 
+#define SETVAL_WANTS_PTR
+
+#if defined(_AIX)
+#undef SETVAL_WANTS_PTR
+#endif
 
 /* {{{ proto int sem_get(int key [, int max_acquire [, int perm]])
    Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously. */
@@ -237,11 +242,16 @@ PHP_FUNCTION(sysvsem_get)
                if (semctl(semid, SYSVSEM_SEM, SETVAL, semarg) == -1) {
                        php_error(E_WARNING, "semctl(SETVAL) failed for key 0x%x: %s", key, strerror(errno));
                }
-#else
+#elif defined(SETVAL_WANTS_PTR)
                /* This is correct for Solaris 2.6 which does not have union semun. */
                if (semctl(semid, SYSVSEM_SEM, SETVAL, &max_acquire) == -1) {
                        php_error(E_WARNING, "semctl(SETVAL) failed for key 0x%x: %s", key, strerror(errno));
                }
+#else
+               /* This works for i.e. AIX */
+               if (semctl(semid, SYSVSEM_SEM, SETVAL, max_acquire) == -1) {
+                       php_error(E_WARNING, "semctl(SETVAL) failed for key 0x%x: %s", key, strerror(errno));
+               }
 #endif
        }