2010-11-19 Marcus Brinkmann <mb@g10code.com>

* engine-gpgconf.c (_gpgme_conf_opt_change): Support
	self-assignment.  Requested by Marc Mutz.
This commit is contained in:
Marcus Brinkmann 2010-11-19 16:06:43 +00:00
parent f1527436c4
commit ed8c52941c
2 changed files with 15 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2010-11-19 Marcus Brinkmann <mb@g10code.com>
* engine-gpgconf.c (_gpgme_conf_opt_change): Support
self-assignment. Requested by Marc Mutz.
2010-11-17 Marcus Brinkmann <mb@g10code.com>
* vasprintf.c (int_vasprintf) [HAVE_W32CE_SYSTEM]: Just use a

View File

@ -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;