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 '')
| -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; | 
