diff --git a/lib/http.c b/lib/http.c
index 855d74733a1f2eba2f803f58626f3c919702eacd..6bba43dda4684d2c86ac543e2fe5f085e9997b30 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -669,6 +669,9 @@ CURLcode Curl_http(struct connectdata *conn)
      */
     if((data->set.httpreq == HTTPREQ_GET) &&
        !checkheaders(data, "Range:")) {
+      /* if a line like this was already allocated, free the previous one */
+      if(conn->allocptr.rangeline)
+        free(conn->allocptr.rangeline);
       conn->allocptr.rangeline = aprintf("Range: bytes=%s\r\n", conn->range);
     }
     else if((data->set.httpreq != HTTPREQ_GET) &&