]> granicus.if.org Git - apache/commitdiff
Small performance improvement for find_end_sequence()
authorBrian Pane <brianp@apache.org>
Sun, 17 Mar 2002 06:04:33 +0000 (06:04 +0000)
committerBrian Pane <brianp@apache.org>
Sun, 17 Mar 2002 06:04:33 +0000 (06:04 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93978 13f79535-47bb-0310-9956-ffa450edef68

modules/filters/mod_include.c

index 25e63c8528966b2a4ffd115abeada168558dabba..7ae98c2fea00e45b09bc9910277c58c9dab47248 100644 (file)
@@ -523,6 +523,7 @@ static apr_bucket *find_end_sequence(apr_bucket *dptr, include_ctx_t *ctx,
     const char *c;
     const char *buf;
     const char *str = ctx->end_seq;
+    const char *start;
 
     do {
         apr_status_t rv = 0;
@@ -580,6 +581,7 @@ static apr_bucket *find_end_sequence(apr_bucket *dptr, include_ctx_t *ctx,
         else {
             c = buf;
         }
+        start = c;
         while (c < buf + len) {
             if (*c == str[ctx->parse_pos]) {
                 if (ctx->state != PARSE_TAIL) {
@@ -595,9 +597,10 @@ static apr_bucket *find_end_sequence(apr_bucket *dptr, include_ctx_t *ctx,
                          * end of the END_SEQUENCE is in the current bucket.
                          * The beginning might be in a previous bucket.
                          */
-                        ctx->bytes_parsed++;
+                        c++;
+                        ctx->bytes_parsed += (c - start);
                         ctx->state = PARSED;
-                        apr_bucket_split(dptr, c - buf + 1);
+                        apr_bucket_split(dptr, c - buf);
                         tmp_buck = APR_BUCKET_NEXT(dptr);
                         return (tmp_buck);
                     }           
@@ -659,8 +662,8 @@ static apr_bucket *find_end_sequence(apr_bucket *dptr, include_ctx_t *ctx,
                 }
             }
             c++;
-            ctx->bytes_parsed++;
         }
+        ctx->bytes_parsed += (c - start);
         dptr = APR_BUCKET_NEXT(dptr);
     } while (dptr != APR_BRIGADE_SENTINEL(bb));
     return NULL;