On Thu, Dec 11, 2014 at 09:54:47AM +0100, Daniel Stenberg wrote:
> On Thu, 11 Dec 2014, Jakub Hrozek wrote:
> 
> >>You want me to add a couple of `void*`?
> >
> >I was thinking:
> >   uint8_t reserved[16];
> 
> Another way, which is one I've used elsewhere, is this:
> 
>   struct larger_in_future {
>     int age;      /* generation of struct */
>     void *member; /* always present */
>   }
> 
> And c-ares would always set age to 0 in the first generation. A future
> extension of the struct would bump the age to 1 and extend the struct:
> 
>   struct larger_in_future {
>     int age;      /* generation of struct */
>     void *member; /* always present */
> 
>     /* only present if 'age' is >= 1 */
>     void *later;
>   }
> 
> It means a program has to check age before accessing struct fields below
> 'member' which is a bit of an annoyance, but possibly doable as the bumping
> shouldn't happen terrible often?

I don't have a problem with that personally. It's a neat trick I haven't
used before.

Reply via email to