$OpenBSD: patch-misc_http_client_c,v 1.1 2010/01/11 22:53:35 nicm Exp $
--- misc/http_client.c.orig	Mon Jan 12 14:43:18 2009
+++ misc/http_client.c	Tue Dec 22 23:19:29 2009
@@ -230,6 +230,12 @@ again:
             else
                 goto error;
         }
+
+        /* req->rbuf.buf may be reallocated inside iobuf_write()
+         * so we should calculate the offset before that happens
+         */
+        size_t consumed = end - (char *)req->rbuf.buf + dlen;
+
         if (!iobuf_write(&req->rbuf, "", 1))
             goto error;
         req->rbuf.off--;
@@ -237,7 +243,7 @@ again:
             goto error;
         if (req->cancel)
             goto cancel;
-        iobuf_consumed(&req->rbuf, end - (char *)req->rbuf.buf + dlen);
+        iobuf_consumed(&req->rbuf, consumed);
         goto again;
     case PS_CHUNK_SIZE:
         assert(req->chunked);
