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-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e882b98157959a852695c845907f2c2e5506163e;p=apache 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 499224508f..f3765eefd9 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);