diff --git a/src/flb_pack.c b/src/flb_pack.c index 2dc3d1e38e7..446bc05c96f 100644 --- a/src/flb_pack.c +++ b/src/flb_pack.c @@ -1478,9 +1478,10 @@ char *flb_msgpack_to_json_str(size_t size, const msgpack_object *obj, int escape while (1) { ret = flb_msgpack_to_json(buf, size, obj, escape_unicode); - if (ret <= 0) { + if (ret < 0) { /* buffer is small. retry.*/ size *= 2; + flb_info("failed to convert msgpack to json, retrying with new size=%zu", size); tmp = flb_realloc(buf, size); if (tmp) { buf = tmp; @@ -1491,6 +1492,12 @@ char *flb_msgpack_to_json_str(size_t size, const msgpack_object *obj, int escape return NULL; } } + else if (ret == 0) { + /* nothing to pack */ + flb_warn("unexpected result from flb_msgpack_to_json: 0"); + flb_free(buf); + return NULL; + } else { break; }