diff options
author | Marcus Brinkmann <[email protected]> | 2010-11-19 16:06:43 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2010-11-19 16:06:43 +0000 |
commit | ed8c52941cf302e879d5cb4af71969a7d9275c2d (patch) | |
tree | 6bc5b11c2b107e7b1e38c4752d2b4a7f3476fbf1 /src/engine-gpgconf.c | |
parent | 2010-11-17 Marcus Brinkmann <[email protected]> (diff) | |
download | gpgme-ed8c52941cf302e879d5cb4af71969a7d9275c2d.tar.gz gpgme-ed8c52941cf302e879d5cb4af71969a7d9275c2d.zip |
2010-11-19 Marcus Brinkmann <[email protected]>
* engine-gpgconf.c (_gpgme_conf_opt_change): Support
self-assignment. Requested by Marc Mutz.
Diffstat (limited to 'src/engine-gpgconf.c')
-rw-r--r-- | src/engine-gpgconf.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/engine-gpgconf.c b/src/engine-gpgconf.c index 990b1b94..44967f56 100644 --- a/src/engine-gpgconf.c +++ b/src/engine-gpgconf.c @@ -618,17 +618,22 @@ _gpgme_conf_arg_release (gpgme_conf_arg_t arg, gpgme_conf_type_t type) gpgme_error_t _gpgme_conf_opt_change (gpgme_conf_opt_t opt, int reset, gpgme_conf_arg_t arg) { - if (opt->new_value) - release_arg (opt->new_value, opt->alt_type); - if (reset) { - opt->new_value = NULL; + if (opt->new_value) + release_arg (opt->new_value, opt->alt_type); + opt->new_value = NULL; opt->change_value = 0; } else { - opt->new_value = arg; + /* Support self-assignment, for example for adding an item to an + existing list. */ + if (opt->new_value && arg != opt->new_value) + { + release_arg (opt->new_value, opt->alt_type); + opt->new_value = arg; + } opt->change_value = 1; } return 0; |