| @@ 162-177 (lines=16) @@ | ||
| 159 | * @param string $number |
|
| 160 | * @return string The crc32 polynomial of $number |
|
| 161 | */ |
|
| 162 | if (!function_exists('smf_crc32')) |
|
| 163 | { |
|
| 164 | function smf_crc32($number) |
|
| 165 | { |
|
| 166 | $crc = crc32($number); |
|
| 167 | ||
| 168 | if ($crc & 0x80000000) |
|
| 169 | { |
|
| 170 | $crc ^= 0xffffffff; |
|
| 171 | $crc += 1; |
|
| 172 | $crc = -$crc; |
|
| 173 | } |
|
| 174 | ||
| 175 | return $crc; |
|
| 176 | } |
|
| 177 | } |
|
| 178 | ||
| 179 | if (!is_callable('random_int')) { |
|
| 180 | /** |
|
| @@ 3098-3120 (lines=23) @@ | ||
| 3095 | return true; |
|
| 3096 | } |
|
| 3097 | ||
| 3098 | if (!function_exists('smf_crc32')) |
|
| 3099 | { |
|
| 3100 | /** |
|
| 3101 | * crc32 doesn't work as expected on 64-bit functions - make our own. |
|
| 3102 | * https://php.net/crc32#79567 |
|
| 3103 | * |
|
| 3104 | * @param string $number |
|
| 3105 | * @return string The crc32 |
|
| 3106 | */ |
|
| 3107 | function smf_crc32($number) |
|
| 3108 | { |
|
| 3109 | $crc = crc32($number); |
|
| 3110 | ||
| 3111 | if ($crc & 0x80000000) |
|
| 3112 | { |
|
| 3113 | $crc ^= 0xffffffff; |
|
| 3114 | $crc += 1; |
|
| 3115 | $crc = -$crc; |
|
| 3116 | } |
|
| 3117 | ||
| 3118 | return $crc; |
|
| 3119 | } |
|
| 3120 | } |
|
| 3121 | ||
| 3122 | ?> |
|