diff --git a/src/util/strbuf.c b/src/util/strbuf.c index 27dc95a1..23517586 100644 --- a/src/util/strbuf.c +++ b/src/util/strbuf.c @@ -66,7 +66,11 @@ int strbuf_vprintf(StringBuffer *strbuf, const char *format, va_list args) { return size_required; } -int strbuf_ncat(StringBuffer *strbuf, size_t datasize, const char data[datasize]) { +int strbuf_ncat(StringBuffer *strbuf, size_t datasize, const char data[]) { + if(UNLIKELY(!datasize)) { + return 0; + } + assert(datasize < INT32_MAX); strbuf_reserve(strbuf, datasize + 1); assert_nolog(strbuf_size_available(strbuf) >= datasize + 1); diff --git a/src/util/strbuf.h b/src/util/strbuf.h index e6ca2631..536e7a23 100644 --- a/src/util/strbuf.h +++ b/src/util/strbuf.h @@ -29,7 +29,7 @@ void strbuf_clear(StringBuffer *strbuf) void strbuf_free(StringBuffer *strbuf) attr_nonnull(1); -int strbuf_ncat(StringBuffer *strbuf, size_t datasize, const char data[datasize]) +int strbuf_ncat(StringBuffer *strbuf, size_t datasize, const char data[]) attr_nonnull(1, 3); INLINE int strbuf_cat(StringBuffer *strbuf, const char *str) {