Author: rhuijben
Date: Wed Nov  4 20:48:57 2015
New Revision: 1712641

URL: http://svn.apache.org/viewvc?rev=1712641&view=rev
Log:
Fix a bunch of warnings by storing the remaining size of a memory mapped
region as apr_size_t instead of apr_off_t.

* buckets/mmap_buckets.c
  (mmap_context_t): Make remaining apr_size_t, just like apr_mmap_t.size.
  (serf_mmap_read): Fix indentation. Avoid const cast via tempvar.
  (serf_mmap_readline): Avoid const cast. Fix type error that caused segfault
    some time ago.
  (serf_mmap_peek): Avoid const cast.

Modified:
    serf/trunk/buckets/mmap_buckets.c

Modified: serf/trunk/buckets/mmap_buckets.c
URL: 
http://svn.apache.org/viewvc/serf/trunk/buckets/mmap_buckets.c?rev=1712641&r1=1712640&r2=1712641&view=diff
==============================================================================
--- serf/trunk/buckets/mmap_buckets.c (original)
+++ serf/trunk/buckets/mmap_buckets.c Wed Nov  4 20:48:57 2015
@@ -30,7 +30,7 @@ typedef struct mmap_context_t {
     apr_mmap_t *mmap;
     void *current;
     apr_off_t offset;
-    apr_off_t remaining;
+    apr_size_t remaining;
 } mmap_context_t;
 
 
@@ -50,10 +50,11 @@ serf_bucket_t *serf_bucket_mmap_create(
 }
 
 static apr_status_t serf_mmap_read(serf_bucket_t *bucket,
-                                     apr_size_t requested,
-                                     const char **data, apr_size_t *len)
+                                   apr_size_t requested,
+                                   const char **data, apr_size_t *len)
 {
     mmap_context_t *ctx = bucket->data;
+    char *rd;
 
     if (requested == SERF_READ_ALL_AVAIL || requested > ctx->remaining) {
         *len = ctx->remaining;
@@ -63,7 +64,8 @@ static apr_status_t serf_mmap_read(serf_
     }
 
     /* ### Would it be faster to call this once and do the offset ourselves? */
-    apr_mmap_offset((void**)data, ctx->mmap, ctx->offset);
+    apr_mmap_offset(&rd, ctx->mmap, ctx->offset);
+    *data = rd;
 
     /* For the next read... */
     ctx->offset += *len;
@@ -76,24 +78,17 @@ static apr_status_t serf_mmap_read(serf_
 }
 
 static apr_status_t serf_mmap_readline(serf_bucket_t *bucket,
-                                         int acceptable, int *found,
-                                         const char **data, apr_size_t *len)
+                                       int acceptable, int *found,
+                                       const char **data, apr_size_t *len)
 {
     mmap_context_t *ctx = bucket->data;
-    const char *end;
+    char *end;
 
     /* ### Would it be faster to call this once and do the offset ourselves? */
-    apr_mmap_offset((void**)data, ctx->mmap, ctx->offset);
-    end = *data;
+    apr_mmap_offset(&end, ctx->mmap, ctx->offset);
+    *data = end;
 
-    /* XXX An overflow is generated if we pass &ctx->remaining to readline.
-     * Not real clear why.
-     */
-    *len = ctx->remaining;
-
-    serf_util_readline(&end, len, acceptable, found);
-
-    *len = end - *data;
+    serf_util_readline(&end, &ctx->remaining, acceptable, found);
 
     ctx->offset += *len;
     ctx->remaining -= *len;
@@ -109,9 +104,11 @@ static apr_status_t serf_mmap_peek(serf_
                                      apr_size_t *len)
 {
     mmap_context_t *ctx = bucket->data;
+    char *rd;
 
     /* return whatever we have left */
-    apr_mmap_offset((void**)data, ctx->mmap, ctx->offset);
+    apr_mmap_offset(&rd, ctx->mmap, ctx->offset);
+    *data = rd;
     *len = ctx->remaining;
 
     /* we returned everything this bucket will ever hold */


Reply via email to