From e7c6cc507cd7e8787254858d860b0e624c329bca Mon Sep 17 00:00:00 2001 From: Robear Selwans Date: Sun, 3 May 2026 23:23:47 +0300 Subject: [PATCH] Fixed ev_vec_pop not always free'ing the popped element --- ev_vec.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ev_vec.h b/ev_vec.h index b3b8a71..0f750c2 100644 --- a/ev_vec.h +++ b/ev_vec.h @@ -643,20 +643,19 @@ ev_vec_pop( if(metadata->length == 0) return EV_VEC_ERR_INVALID_OP; + void *elem = ((char *)*v) + ((metadata->length-1) * metadata->typeData.size); if(out != NULL) { - void *src = ((char *)*v) + ((metadata->length-1) * metadata->typeData.size); if (metadata->typeData.copy_fn) { - metadata->typeData.copy_fn(out, src); + metadata->typeData.copy_fn(out, elem); } else { - memcpy(out, src, metadata->typeData.size); - } - } else { - void *elem = ((char *)*v) + ((metadata->length-1) * metadata->typeData.size); - if (metadata->typeData.free_fn) { - metadata->typeData.free_fn(elem); + memcpy(out, elem, metadata->typeData.size); } } + if (metadata->typeData.free_fn) { + metadata->typeData.free_fn(elem); + } + metadata->length--; return EV_VEC_ERR_NONE;