[Libguestfs] [nbdkit PATCH 1/3] vector: Add VECT_remove

Richard W.M. Jones rjones at redhat.com
Wed Jul 8 11:22:32 UTC 2020


On Tue, Jul 07, 2020 at 05:22:45PM -0500, Eric Blake wrote:
> An upcoming patch wants to remove an arbitrary element from a vector.
> 
> Also, add testsuite coverage for other functions added since the
> original unit test was written.  It's a bit awkward that the compare
> for VECT_search and VECT_sort differ in type, but such is life (we
> indeed have search code where typing the key differently is useful).

I think you should just push this kind of patch, but I have one
comment below:

> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
>  common/utils/vector.h      | 10 ++++++++++
>  common/utils/test-vector.c | 26 +++++++++++++++++++++++++-
>  2 files changed, 35 insertions(+), 1 deletion(-)
> 
> diff --git a/common/utils/vector.h b/common/utils/vector.h
> index c14644a7..880fd308 100644
> --- a/common/utils/vector.h
> +++ b/common/utils/vector.h
> @@ -125,6 +125,16 @@
>        f (v->ptr[i]);                                                    \
>    }                                                                     \
>                                                                          \
> +  /* Remove i'th element.  i=0 => beginning  i=size-1 => end */         \
> +  static inline int                                                     \
> +  name##_remove (name *v, size_t i)                                     \
> +  {                                                                     \
> +    if (i >= v->size) return -1;                                        \
> +    memmove (&v->ptr[i], &v->ptr[i+1], (v->size-i) * sizeof (type));    \
> +    v->size--;                                                          \
> +    return 0;                                                           \
> +  }                                                                     \

Do we need to have this function return an error indication?  I would
think that the check should be replaced with an assert.  If it happens
it's an internal error.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html




More information about the Libguestfs mailing list