apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ruediger Pluem <rpl...@apache.org>
Subject Re: svn commit: r1231605 - /apr/apr/trunk/tables/apr_hash.c
Date Wed, 25 Jan 2012 15:22:07 GMT


Bojan Smojver wrote:
> On Mon, 2012-01-16 at 14:11 +0100, Ruediger Pluem wrote:
>> r1231605 and r1231858 cause massive regressions and test case failures
>> in httpd. Not sure why right now.
> 
> Could you please run your tests with this patch. Let me know how it
> goes. Thanks.
> 


I think there is still a problem with your patch:

@@ -468,6 +484,12 @@

     for (k = 0; k <= overlay->max; k++) {
         for (iter = overlay->array[k]; iter; iter = iter->next) {
+            if (res->hash_func)
+                iter->hash = res->hash_func(iter->key, &iter->klen);
+            else
+                iter->hash = apr_hashfunc_default_internal(iter->key,
+                                                           &iter->klen,
+                                                           res->seed);

Shouldn't you store the result of res->hash_func / apr_hashfunc_default_internal in a local
temporary
variable and use it later on? Otherwise you change the overlay hash and may make it unusable
by setting a new hash
value. IMHO all operations by this code are currently readonly on the base and overlay hash.

             i = iter->hash & res->max;
             for (ent = res->array[i]; ent; ent = ent->next) {
                 if ((ent->klen == iter->klen) &&

Regards

RĂ¼diger

Mime
View raw message