From: Brian Pane Date: Mon, 13 May 2002 06:16:31 +0000 (+0000) Subject: Optimization: modified the power-of-two allocator in ap_rgetline_core() X-Git-Tag: 2.0.37~423 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94c67d067d0dddf7362ce4a31d647327ddefabce;p=thirdparty%2Fapache%2Fhttpd.git Optimization: modified the power-of-two allocator in ap_rgetline_core() so that it converges on the new buffer size in a single iteration. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@95052 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/protocol.c b/server/protocol.c index 499224508f0..f3765eefd9e 100644 --- a/server/protocol.c +++ b/server/protocol.c @@ -303,13 +303,13 @@ AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n, *s = apr_palloc(r->pool, len); } else if (bytes_handled + len > current_alloc) { - /* We resize to the next power of 2. */ - apr_size_t new_size = current_alloc; + /* Increase the buffer size */ + apr_size_t new_size = current_alloc * 2; char *new_buffer; - do { - new_size *= 2; - } while (bytes_handled + len > new_size); + if (bytes_handled + len > new_size) { + new_size = (bytes_handled + len) * 2; + } new_buffer = apr_palloc(r->pool, new_size);