vppinfra: sparse_vec_free free should free the sparse_vec_header not the embedded... 60/34860/4
authorNeale Ranns <neale@graphiant.com>
Sun, 9 Jan 2022 13:27:04 +0000 (13:27 +0000)
committerDamjan Marion <dmarion@me.com>
Thu, 27 Jan 2022 20:07:27 +0000 (20:07 +0000)
Type: fix

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: Ie9532543c4d4439beec8ce097eafa34588ad1266

src/vppinfra/sparse_vec.h

index fc8b3cf..2245be8 100644 (file)
@@ -223,7 +223,16 @@ sparse_vec_index2 (void *v,
   *i1_return = is_member1 + d1;
 }
 
-#define sparse_vec_free(v) vec_free(v)
+#define sparse_vec_free(V)                                                    \
+  do                                                                          \
+    {                                                                         \
+      if (V)                                                                  \
+       {                                                                     \
+         clib_mem_free (sparse_vec_header (V));                              \
+         V = 0;                                                              \
+       }                                                                     \
+    }                                                                         \
+  while (0)
 
 #define sparse_vec_elt_at_index(v,i) \
   vec_elt_at_index ((v), sparse_vec_index ((v), (i)))