From 9067f3332ed0ddc143105b003e614f3f90719916 Mon Sep 17 00:00:00 2001 From: Andrew Yourtchenko Date: Fri, 2 Dec 2022 21:22:37 +0000 Subject: stats: return empty vector rather than NULL if stat_segment_dump_r() is run on an empty vector from ls The return value in this function is initialized with 0, so if a vector of length 0 is passed to stat_segment_dump_r, then this return value is never populated, resulting in inability to distinguish between a successful dump of an empty vector and an error. Solution: call vec_alloc(). As a side effect might get some trivial speed-up. Type: fix Signed-off-by: Andrew Yourtchenko Change-Id: I33fefd801df457152e9ec257742305182e91f339 --- src/vpp-api/client/stat_client.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/vpp-api/client/stat_client.c b/src/vpp-api/client/stat_client.c index 5bb6e9f1e56..5bee21a2cfc 100644 --- a/src/vpp-api/client/stat_client.c +++ b/src/vpp-api/client/stat_client.c @@ -411,6 +411,15 @@ stat_segment_dump_r (uint32_t * stats, stat_client_main_t * sm) if (stat_segment_access_start (&sa, sm)) return 0; + /* preallocate the elements. + * This takes care of a special case where + * the vec_len(stats) == 0, + * such that we return a vector of + * length 0, rather than a null pointer + * (since null pointer is an error) + */ + vec_alloc (res, vec_len (stats)); + for (i = 0; i < vec_len (stats); i++) { /* Collect counter */ -- cgit 1.2.3-korg