summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2023-08-31 11:39:15 -0700
committerVito Caputo <vcaputo@pengaru.com>2023-08-31 11:39:15 -0700
commitc5e0f1db92673e7520e42563dff894b211187b28 (patch)
treee3ada72453981be794ae142d172df1b080e04669
parent0bda624d63d375ffe9aa564e615d82f58ed0d4bb (diff)
til_setup: add another helper for setup_func baking fails
This introduces til_setup_free_with_ret_err() which just does the common idiom of: - free the setup - return with err code so all these failure cases can be reduced to just a direct return of calling this function. Simpler version of til_setup_free_with_failed_setting_ret_err(), which could have been reuesed for this by making the settings-related parameters optional... but this way the call sites are less verbose and these are tiny helpers it's harmless.
-rw-r--r--src/til_setup.c11
-rw-r--r--src/til_setup.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/src/til_setup.c b/src/til_setup.c
index c06614f..d5231a1 100644
--- a/src/til_setup.c
+++ b/src/til_setup.c
@@ -124,3 +124,14 @@ int til_setup_free_with_failed_setting_ret_err(til_setup_t *setup, til_setting_t
return err;
}
+
+
+/* another ergonomic helper for setup_funcs to use in res_setup baking */
+int til_setup_free_with_ret_err(til_setup_t *setup, int err)
+{
+ assert(err < 0);
+
+ til_setup_free(setup);
+
+ return err;
+}
diff --git a/src/til_setup.h b/src/til_setup.h
index eac1444..4491461 100644
--- a/src/til_setup.h
+++ b/src/til_setup.h
@@ -19,5 +19,6 @@ void * til_setup_new(const til_settings_t *settings, size_t size, void (*free_fu
void * til_setup_ref(til_setup_t *setup);
void * til_setup_free(til_setup_t *setup);
int til_setup_free_with_failed_setting_ret_err(til_setup_t *setup, til_setting_t *failed_setting, til_setting_t **res_setting, int err);
+int til_setup_free_with_ret_err(til_setup_t *setup, int err);
#endif
© All Rights Reserved