Browse Source

Fix leaked va_lists

zrythm_meson
David Robillard 2 years ago
parent
commit
de095162e5
  1. 1
      .clang-tidy
  2. 6
      lv2/atom/util.h
  3. 2
      lv2/core/lv2_util.h

1
.clang-tidy

@ -4,7 +4,6 @@ Checks: > @@ -4,7 +4,6 @@ Checks: >
-*-narrowing-conversions,
-*-uppercase-literal-suffix,
-bugprone-macro-parentheses,
-clang-analyzer-valist.Unterminated,
-clang-diagnostic-empty-translation-unit,
-clang-diagnostic-unused-function,
-clang-diagnostic-unused-macros,

6
lv2/atom/util.h

@ -371,6 +371,7 @@ lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body* body, ...) @@ -371,6 +371,7 @@ lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body* body, ...)
va_start(args, body);
for (n_queries = 0; va_arg(args, uint32_t); ++n_queries) {
if (!va_arg(args, const LV2_Atom**)) {
va_end(args);
return -1;
}
}
@ -384,6 +385,7 @@ lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body* body, ...) @@ -384,6 +385,7 @@ lv2_atom_object_body_get(uint32_t size, const LV2_Atom_Object_Body* body, ...)
if (qkey == prop->key && !*qval) {
*qval = &prop->value;
if (++matches == n_queries) {
va_end(args);
return matches;
}
break;
@ -424,6 +426,7 @@ lv2_atom_object_get(const LV2_Atom_Object* object, ...) @@ -424,6 +426,7 @@ lv2_atom_object_get(const LV2_Atom_Object* object, ...)
va_start(args, object);
for (n_queries = 0; va_arg(args, uint32_t); ++n_queries) {
if (!va_arg(args, const LV2_Atom**)) {
va_end(args);
return -1;
}
}
@ -437,6 +440,7 @@ lv2_atom_object_get(const LV2_Atom_Object* object, ...) @@ -437,6 +440,7 @@ lv2_atom_object_get(const LV2_Atom_Object* object, ...)
if (qkey == prop->key && !*qval) {
*qval = &prop->value;
if (++matches == n_queries) {
va_end(args);
return matches;
}
break;
@ -479,6 +483,7 @@ lv2_atom_object_get_typed(const LV2_Atom_Object* object, ...) @@ -479,6 +483,7 @@ lv2_atom_object_get_typed(const LV2_Atom_Object* object, ...)
for (n_queries = 0; va_arg(args, uint32_t); ++n_queries) {
if (!va_arg(args, const LV2_Atom**) ||
!va_arg(args, uint32_t)) {
va_end(args);
return -1;
}
}
@ -493,6 +498,7 @@ lv2_atom_object_get_typed(const LV2_Atom_Object* object, ...) @@ -493,6 +498,7 @@ lv2_atom_object_get_typed(const LV2_Atom_Object* object, ...)
if (!*qval && qkey == prop->key && qtype == prop->value.type) {
*qval = &prop->value;
if (++matches == n_queries) {
va_end(args);
return matches;
}
break;

2
lv2/core/lv2_util.h

@ -86,10 +86,12 @@ lv2_features_query(const LV2_Feature* const* features, ...) @@ -86,10 +86,12 @@ lv2_features_query(const LV2_Feature* const* features, ...)
*data = lv2_features_data(features, uri);
if (required && !*data) {
va_end(args);
return uri;
}
}
va_end(args);
return NULL;
}

Loading…
Cancel
Save