From 7663c7632935548a0f3d5b395792cdd3bfee0df9 Mon Sep 17 00:00:00 2001 From: Robear Selwans Date: Tue, 21 Apr 2026 14:06:30 +0200 Subject: [PATCH] Fixed underflow in ev_vec_pop --- ev_vec.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ev_vec.h b/ev_vec.h index f2ff12f..b3b8a71 100644 --- a/ev_vec.h +++ b/ev_vec.h @@ -45,7 +45,8 @@ typedef void *ev_svec_t; typedef enum { EV_VEC_ERR_NONE = 0, - EV_VEC_ERR_OOM = 1 + EV_VEC_ERR_OOM = -1, + EV_VEC_ERR_INVALID_OP = -2 } ev_vec_error_t; TYPEDATA_GEN(ev_vec_error_t, DEFAULT(EV_VEC_ERR_NONE)); @@ -252,7 +253,7 @@ ev_vec_fini( * vector * * \returns The index of the element that was just pushed. If the operation - * failed, a non-zero (vec_error_t) value is returned. + * failed, a less-than-zero (vec_error_t) value is returned. */ EV_VEC_API int ev_vec_push_impl( @@ -640,6 +641,8 @@ ev_vec_pop( ev_vec_t* v = (ev_vec_t*)vec_p; __ev_vec_getmeta(*v) + if(metadata->length == 0) return EV_VEC_ERR_INVALID_OP; + if(out != NULL) { void *src = ((char *)*v) + ((metadata->length-1) * metadata->typeData.size); if (metadata->typeData.copy_fn) {