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