aharvey                                  Mon, 08 Nov 2010 09:35:33 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=305193

Log:
Implemented FR #53213 (Adler32 algorithm is very slow). Patch by zavasek at
yandex dot ru.

Bug: http://bugs.php.net/53213 (error getting bug information)
      
Changed paths:
    U   php/php-src/trunk/NEWS
    U   php/php-src/trunk/ext/hash/hash_adler32.c

Modified: php/php-src/trunk/NEWS
===================================================================
--- php/php-src/trunk/NEWS      2010-11-08 09:29:15 UTC (rev 305192)
+++ php/php-src/trunk/NEWS      2010-11-08 09:35:33 UTC (rev 305193)
@@ -124,6 +124,8 @@

 - Implemented FR #53238 (Make third parameter of preg_match_all optional).
   (Adam)
+- Implemented FR #53213 (Adler32 algorithm is very slow).
+  (zavasek at yandex dot ru)
 - Implemented FR #52555 (Ability to get HTTP response code). (Paul Dragoonis)
 - Implemented FR #51295 (SQLite3::busyTimeout not existing). (Mark)
 - Implemented FR #49366 (Make slash escaping optional in json_encode()). (Adam)

Modified: php/php-src/trunk/ext/hash/hash_adler32.c
===================================================================
--- php/php-src/trunk/ext/hash/hash_adler32.c   2010-11-08 09:29:15 UTC (rev 
305192)
+++ php/php-src/trunk/ext/hash/hash_adler32.c   2010-11-08 09:35:33 UTC (rev 
305193)
@@ -34,9 +34,16 @@
        s[0] = context->state & 0xffff;
        s[1] = (context->state >> 16) & 0xffff;
        for (i = 0; i < len; ++i) {
-               s[0] = (s[0] + input[i]) % 65521;
-               s[1] = (s[1] + s[0]) % 65521;
+               s[0] += input[i];
+               s[1] += s[0];
+               if (s[1]>=0x7fffffff)
+               {
+                       s[0] = s[0] % 65521;
+                       s[1] = s[1] % 65521;
+               }
        }
+       s[0] = s[0] % 65521;
+       s[1] = s[1] % 65521;
        context->state = s[0] + (s[1] << 16);
 }


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to