You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by mi...@apache.org on 2013/05/23 16:17:56 UTC
svn commit: r1485723 - in /httpd/httpd/branches/2.4.x: ./ CHANGES STATUS
server/util.c
Author: minfrin
Date: Thu May 23 14:17:56 2013
New Revision: 1485723
URL: http://svn.apache.org/r1485723
Log:
core: speed up (for common cases) and reduce memory usage of ap_escape_logitem
This should save 70-100 bytes in the request pool for a default config.
trunk patch: http://svn.apache.org/r1485409
Submitted by: jailletc36
Reviewed by: jim, covener
Modified:
httpd/httpd/branches/2.4.x/ (props changed)
httpd/httpd/branches/2.4.x/CHANGES
httpd/httpd/branches/2.4.x/STATUS
httpd/httpd/branches/2.4.x/server/util.c
Propchange: httpd/httpd/branches/2.4.x/
------------------------------------------------------------------------------
Merged /httpd/httpd/trunk:r1485409
Modified: httpd/httpd/branches/2.4.x/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/CHANGES?rev=1485723&r1=1485722&r2=1485723&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.4.x/CHANGES [utf-8] Thu May 23 14:17:56 2013
@@ -2,6 +2,10 @@
Changes with Apache 2.4.5
+ *) core: speed up (for common cases) and reduce memory usage of
+ ap_escape_logitem(). This should save 70-100 bytes in the request
+ pool for a default config. [Christophe Jaillet]
+
*) mod_dav: Ensure URI is correctly uriencoded on return. PR 54611
[Timothy Wood <tjw omnigroup.com>]
Modified: httpd/httpd/branches/2.4.x/STATUS
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/STATUS?rev=1485723&r1=1485722&r2=1485723&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/STATUS (original)
+++ httpd/httpd/branches/2.4.x/STATUS Thu May 23 14:17:56 2013
@@ -90,11 +90,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- * core: speed up (for common cases) and reduce memory usage of ap_escape_logitem
- This should save 70-100 bytes in the request pool for a default config.
- trunk patch: http://svn.apache.org/r1485409
- 2.4.x patch: trunk works
- +1: jailletc36, jim, covener
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
[ New proposals should be added at the end of the list ]
Modified: httpd/httpd/branches/2.4.x/server/util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/server/util.c?rev=1485723&r1=1485722&r2=1485723&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/server/util.c (original)
+++ httpd/httpd/branches/2.4.x/server/util.c Thu May 23 14:17:56 2013
@@ -1849,16 +1849,33 @@ AP_DECLARE(char *) ap_escape_logitem(apr
char *ret;
unsigned char *d;
const unsigned char *s;
+ apr_size_t length, escapes = 0;
if (!str) {
return NULL;
}
- ret = apr_palloc(p, 4 * strlen(str) + 1); /* Be safe */
+ /* Compute how many characters need to be escaped */
+ s = (const unsigned char *)str;
+ for (; *s; ++s) {
+ if (TEST_CHAR(*s, T_ESCAPE_LOGITEM)) {
+ escapes++;
+ }
+ }
+
+ /* Compute the length of the input string, including NULL */
+ length = s - (const unsigned char *)str + 1;
+
+ /* Fast path: nothing to escape */
+ if (escapes == 0) {
+ return apr_pmemdup(p, str, length);
+ }
+
+ /* Each escaped character needs up to 3 extra bytes (0 --> \x00) */
+ ret = apr_palloc(p, length + 3 * escapes);
d = (unsigned char *)ret;
s = (const unsigned char *)str;
for (; *s; ++s) {
-
if (TEST_CHAR(*s, T_ESCAPE_LOGITEM)) {
*d++ = '\\';
switch(*s) {