mirror of
https://github.com/php/php-src.git
synced 2024-11-30 05:13:56 +08:00
- MFB:
- 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
This commit is contained in:
parent
0916b5c607
commit
154bb7c6a7
@ -26,19 +26,20 @@
|
||||
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);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user