diff options
author | Lars Henriksen <LarsHenriksen@get2net.dk> | 2019-03-17 20:41:05 +0100 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2019-03-21 06:41:46 +0100 |
commit | 78a46ac7cbae997979d7c1394328d3d44f9f1df4 (patch) | |
tree | 6131fd6623f2ce5966c41b2c3ae577588869eb46 | |
parent | d26164fb725e22f8eebd8d94ad59cab3921b8a6f (diff) | |
download | calcurse-78a46ac7cbae997979d7c1394328d3d44f9f1df4.tar.gz calcurse-78a46ac7cbae997979d7c1394328d3d44f9f1df4.zip |
Avoid deadlock in config_save()
Must not exit with nbar.mutex locked.
Addresses GitHub issue #201.
Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
-rw-r--r-- | src/config.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/config.c b/src/config.c index a728c83..a6c5e59 100644 --- a/src/config.c +++ b/src/config.c @@ -633,9 +633,9 @@ static int config_load_cb(const char *key, const char *value, void *dummy) int result = config_set_conf(key, value); if (result < 0) { - WARN_MSG(_("unknown user option: \"%s\""), key); + WARN_MSG(_("unknown user option: \"%s\" (ignored)"), key); } else if (result == 0) { - WARN_MSG(_("invalid option format: \"%s\""), key); + WARN_MSG(_("invalid option format: \"%s\" (ignored)"), key); } return 1; @@ -655,12 +655,13 @@ static int config_save_cb(const char *key, const char *value, void *status) (struct config_save_status *)status); if (result < 0) { - EXIT(_("configuration variable unknown: \"%s\""), key); - /* NOTREACHED */ + WARN_MSG(_("unknown user option: \"%s\" (disabled)"), key); } else if (result == 0) { - EXIT(_("wrong configuration variable format for \"%s\""), - key); - /* NOTREACHED */ + WARN_MSG(_("invalid option format: \"%s\" (disabled)"), key); + } + if (result <= 0) { + fputc('#', ((struct config_save_status *)status)->fp); + buf = mem_strdup(value); } fputs(key, ((struct config_save_status *)status)->fp); |