Revision 5666dd19

b/qapi/qapi-dealloc-visitor.c
26 26
{
27 27
    Visitor visitor;
28 28
    QTAILQ_HEAD(, StackEntry) stack;
29
    bool is_list_head;
29 30
};
30 31

  
31 32
static QapiDeallocVisitor *to_qov(Visitor *v)
......
70 71

  
71 72
static void qapi_dealloc_start_list(Visitor *v, const char *name, Error **errp)
72 73
{
74
    QapiDeallocVisitor *qov = to_qov(v);
75
    qov->is_list_head = true;
73 76
}
74 77

  
75
static GenericList *qapi_dealloc_next_list(Visitor *v, GenericList **list,
78
static GenericList *qapi_dealloc_next_list(Visitor *v, GenericList **listp,
76 79
                                           Error **errp)
77 80
{
78
    GenericList *retval = *list;
79
    g_free(retval->value);
80
    *list = retval->next;
81
    return retval;
81
    GenericList *list = *listp;
82
    QapiDeallocVisitor *qov = to_qov(v);
83

  
84
    if (!qov->is_list_head) {
85
        *listp = list->next;
86
        g_free(list);
87
        return *listp;
88
    }
89

  
90
    qov->is_list_head = false;
91
    return list;
82 92
}
83 93

  
84 94
static void qapi_dealloc_end_list(Visitor *v, Error **errp)

Also available in: Unified diff