summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2023-05-26 16:58:20 -0700
committerVito Caputo <vcaputo@pengaru.com>2023-05-26 18:09:39 -0700
commit12a4ecfbf413777c3ef98719e6b41993a9618903 (patch)
tree1ca1da86cf3a882de694ce82b14e50be0a1bed3c
parenteee1721010b37cccde8635796cb2a2553d19889f (diff)
setup,til: assert(desc) if setup_func() wants more settings
In this "all settings require descs" world, when setup_func forgets to return a res_desc for a setting it wants, we can end up in an infinite loop situation. It's better to abort immediately on the assert to catch such a program error.
-rw-r--r--src/setup.c2
-rw-r--r--src/til.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/src/setup.c b/src/setup.c
index 30a5401..d2618ad 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -22,6 +22,8 @@ int setup_interactively(til_settings_t *settings, int (*setup_func)(const til_se
/* TODO: regex and error handling */
while ((r = setup_func(settings, &setting, &desc, res_setup)) > 0) {
+ assert(desc);
+
additions++;
/* if setup_func() has returned a description for an undescribed preexisting setting,
diff --git a/src/til.c b/src/til.c
index 38daac8..fad9383 100644
--- a/src/til.c
+++ b/src/til.c
@@ -348,6 +348,8 @@ int til_module_randomize_setup(const til_module_t *module, unsigned seed, til_se
return -ENOMEM;
for (setting = NULL; module->setup(settings, &setting, &desc, res_setup) > 0; setting = NULL) {
+ assert(desc);
+
if (!setting) {
if (desc->spec.random) {
char *value;
© All Rights Reserved