Skip to content

Commit 5b7eb8c

Browse files
committed
COMMON: fix memory leak in uds
1 parent b32f15a commit 5b7eb8c

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/common/var_uds.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,13 @@ var_p_t uds_resolve_fields(const var_p_t var_p) {
156156
/**
157157
* free any owned variable in element
158158
*/
159-
void var_free(uds_field_s* element) {
159+
void var_free(uds_field_s* element, int erase) {
160160
if (element->var_owner_flag) {
161161
v_free(element->var);
162-
tmp_free(element->var);
163-
element->var = NULL;
162+
if (erase) {
163+
tmp_free(element->var);
164+
element->var = NULL;
165+
}
164166
}
165167
}
166168

@@ -170,7 +172,7 @@ void var_free(uds_field_s* element) {
170172
void uds_clear(const var_p_t var) {
171173
uds_field_s *next = var->v.uds;
172174
while (next) {
173-
var_free(next);
175+
var_free(next, 0);
174176
next = next->next;
175177
}
176178
}
@@ -181,7 +183,7 @@ void uds_clear(const var_p_t var) {
181183
void uds_free_element(uds_field_s* element) {
182184
if (element) {
183185
uds_free_element(element->next);
184-
var_free(element);
186+
var_free(element, 1);
185187
tmp_free(element);
186188
}
187189
}

0 commit comments

Comments
 (0)