pajoye Thu Feb 9 15:33:53 2006 UTC Modified files: (Branch: PHP_5_1) /php-src/ext/standard crc32.c /php-src/ext/standard/tests/strings bug36306.phpt Log: - revert last fix - ensure that we are in 32bit - do not try to compare the decimal values but hex, php does not have unsigned integer http://cvs.php.net/viewcvs.cgi/php-src/ext/standard/crc32.c?r1=1.16.2.2&r2=1.16.2.3&diff_format=u Index: php-src/ext/standard/crc32.c diff -u php-src/ext/standard/crc32.c:1.16.2.2 php-src/ext/standard/crc32.c:1.16.2.3 --- php-src/ext/standard/crc32.c:1.16.2.2 Tue Feb 7 00:23:55 2006 +++ php-src/ext/standard/crc32.c Thu Feb 9 15:33:53 2006 @@ -16,31 +16,29 @@ +----------------------------------------------------------------------+ */ -/* $Id: crc32.c,v 1.16.2.2 2006/02/07 00:23:55 pajoye Exp $ */ +/* $Id: crc32.c,v 1.16.2.3 2006/02/09 15:33:53 pajoye Exp $ */ #include "php.h" #include "basic_functions.h" #include "crc32.h" -/* {{{ proto string crc32(string str) - Calculate the crc32 polynomial of a string */ PHP_NAMED_FUNCTION(php_if_crc32) { - unsigned int crc = ~0; char *p; int len, nr; - + php_uint32 crcinit = 0; + register php_uint32 crc; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &p, &nr) == FAILURE) { return; } + crc = crcinit^0xFFFFFFFF; - len = 0 ; - for (len += nr; nr--; ++p) { - CRC32(crc, *p); + for (len =+nr; nr--; ++p) { + crc = ((crc >> 8) & 0x00FFFFFF) ^ crc32tab[(crc ^ (*p)) & 0xFF ]; } - RETVAL_LONG(~ (long) crc); + RETVAL_LONG(crc^0xFFFFFFFF); } -/* }}} */ /* * Local variables: http://cvs.php.net/viewcvs.cgi/php-src/ext/standard/tests/strings/bug36306.phpt?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/ext/standard/tests/strings/bug36306.phpt diff -u php-src/ext/standard/tests/strings/bug36306.phpt:1.1.2.1 php-src/ext/standard/tests/strings/bug36306.phpt:1.1.2.2 --- php-src/ext/standard/tests/strings/bug36306.phpt:1.1.2.1 Tue Feb 7 00:23:55 2006 +++ php-src/ext/standard/tests/strings/bug36306.phpt Thu Feb 9 15:33:53 2006 @@ -2,7 +2,14 @@ Bug #36306 crc32() 64bit --FILE-- <?php -echo crc32("platform independant") . "\n"; + +/* as an example how to write crc32 tests + PHP does not have uint values, you cannot + display crc32 like a signed integer. + Have to find some small strings to truely reproduce + the problem, this example being not a problem +*/ +echo dechex(crc32("platform independant")) . "\n"; ?> --EXPECT-- --858128794 +ccd9fe66
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php