Return-Path: Delivered-To: apmail-apr-commits-archive@www.apache.org Received: (qmail 58577 invoked from network); 19 Jan 2010 21:39:36 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 19 Jan 2010 21:39:36 -0000 Received: (qmail 52426 invoked by uid 500); 19 Jan 2010 21:39:36 -0000 Delivered-To: apmail-apr-commits-archive@apr.apache.org Received: (qmail 52353 invoked by uid 500); 19 Jan 2010 21:39:36 -0000 Mailing-List: contact commits-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: Reply-To: dev@apr.apache.org List-Id: Delivered-To: mailing list commits@apr.apache.org Received: (qmail 52344 invoked by uid 99); 19 Jan 2010 21:39:36 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Jan 2010 21:39:36 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Jan 2010 21:39:33 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4E18423888E8; Tue, 19 Jan 2010 21:39:12 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r900971 - in /apr/apr/branches/1.4.x: CHANGES include/apr_hash.h tables/apr_hash.c Date: Tue, 19 Jan 2010 21:39:12 -0000 To: commits@apr.apache.org From: minfrin@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100119213912.4E18423888E8@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: minfrin Date: Tue Jan 19 21:39:11 2010 New Revision: 900971 URL: http://svn.apache.org/viewvc?rev=900971&view=rev Log: Revert r817809. Modified: apr/apr/branches/1.4.x/CHANGES apr/apr/branches/1.4.x/include/apr_hash.h apr/apr/branches/1.4.x/tables/apr_hash.c Modified: apr/apr/branches/1.4.x/CHANGES URL: http://svn.apache.org/viewvc/apr/apr/branches/1.4.x/CHANGES?rev=900971&r1=900970&r2=900971&view=diff ============================================================================== --- apr/apr/branches/1.4.x/CHANGES [utf-8] (original) +++ apr/apr/branches/1.4.x/CHANGES [utf-8] Tue Jan 19 21:39:11 2010 @@ -1,8 +1,6 @@ -*- coding: utf-8 -*- Changes for APR 1.4.2 - - Changes for APR 1.4.1 *) Win32: Properly handle the ERROR_DIRECTORY system error code. Modified: apr/apr/branches/1.4.x/include/apr_hash.h URL: http://svn.apache.org/viewvc/apr/apr/branches/1.4.x/include/apr_hash.h?rev=900971&r1=900970&r2=900971&view=diff ============================================================================== --- apr/apr/branches/1.4.x/include/apr_hash.h (original) +++ apr/apr/branches/1.4.x/include/apr_hash.h Tue Jan 19 21:39:11 2010 @@ -73,7 +73,7 @@ /** * Create a hash table. * @param pool The pool to allocate the hash table out of - * @return The hash table just created, or NULL if memory allocation failed + * @return The hash table just created */ APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool); @@ -81,7 +81,7 @@ * Create a hash table with a custom hash function * @param pool The pool to allocate the hash table out of * @param hash_func A custom hash function. - * @return The hash table just created, or NULL if memory allocation failed + * @return The hash table just created */ APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool, apr_hashfunc_t hash_func); @@ -90,7 +90,7 @@ * Make a copy of a hash table * @param pool The pool from which to allocate the new hash table * @param h The hash table to clone - * @return The hash table just created, or NULL if memory allocation failed + * @return The hash table just created * @remark Makes a shallow copy */ APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool, @@ -186,8 +186,7 @@ * @param p The pool to use for the new hash table * @param overlay The table to add to the initial table * @param base The table that represents the initial values of the new table - * @return A new hash table containing all of the data from the two passed in, - * or NULL if memory allocation failed + * @return A new hash table containing all of the data from the two passed in */ APR_DECLARE(apr_hash_t *) apr_hash_overlay(apr_pool_t *p, const apr_hash_t *overlay, @@ -205,8 +204,7 @@ * make values from h1 override values from h2 (same semantics as * apr_hash_overlay()) * @param data Client data to pass to the merger function - * @return A new hash table containing all of the data from the two passed in, - * or NULL if memory allocation failed. + * @return A new hash table containing all of the data from the two passed in */ APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p, const apr_hash_t *h1, Modified: apr/apr/branches/1.4.x/tables/apr_hash.c URL: http://svn.apache.org/viewvc/apr/apr/branches/1.4.x/tables/apr_hash.c?rev=900971&r1=900970&r2=900971&view=diff ============================================================================== --- apr/apr/branches/1.4.x/tables/apr_hash.c (original) +++ apr/apr/branches/1.4.x/tables/apr_hash.c Tue Jan 19 21:39:11 2010 @@ -67,15 +67,12 @@ /* * The size of the array is always a power of two. We use the maximum * index rather than the size so that we can use bitwise-AND for - * modular arithmetic. The count of hash entries may be greater - * depending on the chosen collision rate. - * - * We allocate the bucket array in a sub-pool, "array_pool". This allows us - * to reclaim the old bucket array after an expansion. + * modular arithmetic. + * The count of hash entries may be greater depending on the chosen + * collision rate. */ struct apr_hash_t { apr_pool_t *pool; - apr_pool_t *array_pool; apr_hash_entry_t **array; apr_hash_index_t iterator; /* For apr_hash_first(NULL, ...) */ unsigned int count, max; @@ -92,20 +89,14 @@ static apr_hash_entry_t **alloc_array(apr_hash_t *ht, unsigned int max) { - return apr_pcalloc(ht->array_pool, sizeof(*ht->array) * (max + 1)); + return apr_pcalloc(ht->pool, sizeof(*ht->array) * (max + 1)); } APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool) { - apr_pool_t *array_pool; apr_hash_t *ht; - - if (apr_pool_create(&array_pool, pool) != APR_SUCCESS) - return NULL; - ht = apr_palloc(pool, sizeof(apr_hash_t)); ht->pool = pool; - ht->array_pool = array_pool; ht->free = NULL; ht->count = 0; ht->max = INITIAL_MAX; @@ -172,17 +163,10 @@ static void expand_array(apr_hash_t *ht) { - apr_pool_t *new_array_pool; - apr_pool_t *old_array_pool; apr_hash_index_t *hi; apr_hash_entry_t **new_array; unsigned int new_max; - if (apr_pool_create(&new_array_pool, ht->pool) != APR_SUCCESS) - return; /* Give up and don't try to expand the array */ - old_array_pool = ht->array_pool; - ht->array_pool = new_array_pool; - new_max = ht->max * 2 + 1; new_array = alloc_array(ht, new_max); for (hi = apr_hash_first(NULL, ht); hi; hi = apr_hash_next(hi)) { @@ -192,8 +176,6 @@ } ht->array = new_array; ht->max = new_max; - - apr_pool_destroy(old_array_pool); } APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *char_key, @@ -306,25 +288,22 @@ APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool, const apr_hash_t *orig) { - apr_pool_t *array_pool; apr_hash_t *ht; apr_hash_entry_t *new_vals; unsigned int i, j; - if (apr_pool_create(&array_pool, pool) != APR_SUCCESS) - return NULL; - ht = apr_palloc(pool, sizeof(apr_hash_t) + + sizeof(*ht->array) * (orig->max + 1) + sizeof(apr_hash_entry_t) * orig->count); ht->pool = pool; - ht->array_pool = array_pool; ht->free = NULL; ht->count = orig->count; ht->max = orig->max; ht->hash_func = orig->hash_func; - ht->array = alloc_array(ht, ht->max); + ht->array = (apr_hash_entry_t **)((char *)ht + sizeof(apr_hash_t)); - new_vals = (apr_hash_entry_t *)((char *)(ht) + sizeof(apr_hash_t)); + new_vals = (apr_hash_entry_t *)((char *)(ht) + sizeof(apr_hash_t) + + sizeof(*ht->array) * (orig->max + 1)); j = 0; for (i = 0; i <= ht->max; i++) { apr_hash_entry_t **new_entry = &(ht->array[i]); @@ -413,7 +392,6 @@ const void *data), const void *data) { - apr_pool_t *array_pool; apr_hash_t *res; apr_hash_entry_t *new_vals = NULL; apr_hash_entry_t *iter; @@ -437,12 +415,8 @@ } #endif - if (apr_pool_create(&array_pool, p) != APR_SUCCESS) - return NULL; - res = apr_palloc(p, sizeof(apr_hash_t)); res->pool = p; - res->array_pool = array_pool; res->free = NULL; res->hash_func = base->hash_func; res->count = base->count;