1  #include <stdlib.h>
       2  
       3  struct marker {
       4    struct marker *next;
       5    void *ref;
       6  };
       7  struct data {
       8    struct marker *marker;
       9  };
      10  
      11  void data_free(struct data d)
      12  {
      13    struct marker *nm, *m;
      14  
      15    m = d.marker;
      16    while (m) {
      17      nm = m->next;
      18      free(m->ref);
      19      free(m);
      20      m = nm;
      21    }
      22  }