On 12/10/2012 06:36 PM, Eric Blake wrote: > On 12/10/2012 02:20 PM, Laine Stump wrote: >> I noticed when writing the backend functions for virNetworkUpdate that >> I was repeating the same sequence of memmove, VIR_REALLOC, nXXX-- (and >> messed up the args to memmove at least once), and had seen the same >> sequence in a lot of other places, so I decided to write a few >> utility functions/macros - see the .h file for full documentation. >> >> The intent is to reduce the number of lines of code, but more >> importantly to eliminate the need to check the element size and >> element count arithmetic every time we need to do this (I *always* >> make at least one mistake.) >> >> VIR_INSERT_ELEMENT: insert one element at an arbitrary index within an >> array of objects. The size of each object is determined >> automatically by the macro using sizeof(*array). If a pointer to a >> new element is provided, its contents are copied into the inserted >> space then the original contents are 0'ed out; if no newelem is >> provided the new space is set to all 0. > This is slightly out of date, now that we reworked things to always add > a new element. (Our IRC conversation was that the underlying function > should still support NULL instead of an array, but that we won't worry > about passing NULL via the macros until we have a need for a > VIR_INSERT_N_ELEMENTS macro later on). I made all the changes that both you and Doug pointed out, and pushed this patch. I'm also pushing 2/17, but saving the rest until "later" (maybe after 1.0.1 is released?) Thanks for the reviews! -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list