# HG changeset patch
# User Matthew Wild <mwild1@gmail.com>
# Date 1598282293 -3600
# Node ID 8c6bace13229d3bd9e62c0d19f635a31d15be02f
# Parent  7b720a81551946226cd400da2199fa72b6df8184
util.dbuffer: Fix :sub() not working with partially-consumed chunks (thanks Zash for test case)

This also appears to fix some bugs with chunk-encoded streams in net.http.parser.

diff -r 7b720a815519 -r 8c6bace13229 spec/util_dbuffer_spec.lua
--- a/spec/util_dbuffer_spec.lua	Mon Aug 24 17:07:37 2020 +0200
+++ b/spec/util_dbuffer_spec.lua	Mon Aug 24 16:18:13 2020 +0100
@@ -67,7 +67,7 @@
 			assert.equals("hello", b:sub(1, 5));
 		end);
 
-		pending("works after discard", function ()
+		it("works after discard", function ()
 			local b = dbuffer.new(256);
 			assert.truthy(b:write("foo"));
 			assert.truthy(b:write("bar"));
diff -r 7b720a815519 -r 8c6bace13229 util/dbuffer.lua
--- a/util/dbuffer.lua	Mon Aug 24 17:07:37 2020 +0200
+++ b/util/dbuffer.lua	Mon Aug 24 16:18:13 2020 +0100
@@ -123,7 +123,7 @@
 
 	self:collapse(j);
 
-	return self.items:peek():sub(i, j);
+	return self.items:peek():sub(self.front_consumed+1):sub(i, j);
 end
 
 function dbuffer_methods:byte(i, j)