]> granicus.if.org Git - php/commitdiff
Fix for http://bugs.php.net/bugs.php?id=9082
authorColin Viebrock <cmv@php.net>
Fri, 2 Feb 2001 20:55:27 +0000 (20:55 +0000)
committerColin Viebrock <cmv@php.net>
Fri, 2 Feb 2001 20:55:27 +0000 (20:55 +0000)
I know switch() is expensive, so someone rewrite this "properly" if you
want.

ext/sockets/sockets.c

index 76203329d376e6ca6fa7524aebaf895a13d97d63..67ce0eef20c3da8675ccdcf1f3d925a15ffc04f3 100644 (file)
@@ -857,10 +857,27 @@ PHP_FUNCTION(getpeername)
        int salen = sizeof(php_sockaddr_storage);
        int ret;
 
+       switch (ZEND_NUM_ARGS()) {
+               case 3:
+                       if (zend_get_parameters_ex(ZEND_NUM_ARGS(), &fd, &addr, &port) == FAILURE)
+                               WRONG_PARAM_COUNT;
+                       break;
+               case 2:
+                       if (zend_get_parameters_ex(ZEND_NUM_ARGS(), &fd, &addr) == FAILURE)
+                               WRONG_PARAM_COUNT;
+                       break;
+                       MAKE_STD_ZVAL((*port));
+                       
+               default:
+                       WRONG_PARAM_COUNT;
+       }
+
+/*
        if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 3 || 
            zend_get_parameters_ex(ZEND_NUM_ARGS(), &fd, &addr, &port) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
+*/
        multi_convert_to_long_ex(ZEND_NUM_ARGS() - 1, fd, port);
        convert_to_string_ex(addr);