pajoye Fri, 09 Oct 2009 17:41:29 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=289436
Log:
- Merge: long2ip() can return wrong value in a multi-threaded applications
Changed paths:
U php/php-src/branches/PHP_5_3_1/ext/standard/basic_functions.c
Modified: php/php-src/branches/PHP_5_3_1/ext/standard/basic_functions.c
===================================================================
--- php/php-src/branches/PHP_5_3_1/ext/standard/basic_functions.c
2009-10-09 17:38:19 UTC (rev 289435)
+++ php/php-src/branches/PHP_5_3_1/ext/standard/basic_functions.c
2009-10-09 17:41:29 UTC (rev 289436)
@@ -3932,6 +3932,9 @@
int ip_len;
unsigned long n;
struct in_addr myaddr;
+#ifdef HAVE_INET_PTON
+ char str[40];
+#endif
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &ip, &ip_len)
== FAILURE) {
return;
@@ -3940,7 +3943,15 @@
n = strtoul(ip, NULL, 0);
myaddr.s_addr = htonl(n);
+#ifdef HAVE_INET_PTON
+ if (inet_ntop(AF_INET, &myaddr, str, sizeof(str))) {
+ RETURN_STRING(str, 1);
+ } else {
+ RETURN_FALSE;
+ }
+#else
RETURN_STRING(inet_ntoa(myaddr), 1);
+#endif
}
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php