aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--spec/util_ringbuffer_spec.lua5
-rw-r--r--util-src/ringbuffer.c1
2 files changed, 6 insertions, 0 deletions
diff --git a/spec/util_ringbuffer_spec.lua b/spec/util_ringbuffer_spec.lua
index 5d63b24b..ccb5493a 100644
--- a/spec/util_ringbuffer_spec.lua
+++ b/spec/util_ringbuffer_spec.lua
@@ -7,6 +7,11 @@ describe("util.ringbuffer", function ()
it("can be created", function ()
assert.truthy(rb.new());
end);
+ it("won't create an empty buffer", function ()
+ assert.has_error(function ()
+ rb.new(0);
+ end);
+ end);
end);
describe(":write", function ()
local b = rb.new();
diff --git a/util-src/ringbuffer.c b/util-src/ringbuffer.c
index 3e17cdf5..f4a51cc9 100644
--- a/util-src/ringbuffer.c
+++ b/util-src/ringbuffer.c
@@ -198,6 +198,7 @@ static int rb_free(lua_State *L) {
static int rb_new(lua_State *L) {
size_t size = luaL_optinteger(L, 1, sysconf(_SC_PAGESIZE));
+ luaL_argcheck(L, size > 0, 1, "positive integer expected");
ringbuffer *b = lua_newuserdata(L, sizeof(ringbuffer) + size);
b->rpos = 0;