From b94497bf1f9e5b28767b992dd14a624809421801 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 1 Aug 2002 10:16:21 +0000 Subject: [PATCH] Fixed an update conflict. --- gpgme/ChangeLog | 8 ++++++++ gpgme/encrypt.c | 36 ++++++++++++++++++++++++------------ 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index d744488..8d56554 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -166,6 +166,14 @@ * engine-gpgsm.c (_gpgme_gpgsm_add_io_cb): Call IO_CBS->add with new argument, fix up error handling. +2002-07-03 Werner Koch + + * encrypt.c (status_handler_finish): New. + (_gpgme_encrypt_status_handler): Moved some code out to the new + function and call this function also in case we get into the + status handler with an error which might happen due to a kludge in + engine-gpgsm.c + 2002-06-28 Marcus Brinkmann * keylist.c (gpgme_op_keylist_ext_start): Always use our own FD diff --git a/gpgme/encrypt.c b/gpgme/encrypt.c index 57ec978..df7ef90 100644 --- a/gpgme/encrypt.c +++ b/gpgme/encrypt.c @@ -99,26 +99,38 @@ append_xml_encinfo (GpgmeData *rdh, char *args) } +static void +status_handler_finish (GpgmeCtx ctx) +{ + if (ctx->result.encrypt->xmlinfo) + { + append_xml_encinfo (&ctx->result.encrypt->xmlinfo, NULL); + _gpgme_set_op_info (ctx, ctx->result.encrypt->xmlinfo); + ctx->result.encrypt->xmlinfo = NULL; + } + if (ctx->error) + ; /* already set by kludge in engine-gpgsm */ + else if (ctx->result.encrypt->no_valid_recipients) + ctx->error = mk_error (No_Recipients); + else if (ctx->result.encrypt->invalid_recipients) + ctx->error = mk_error (Invalid_Recipients); +} + void _gpgme_encrypt_status_handler (GpgmeCtx ctx, GpgmeStatusCode code, char *args) { if (ctx->error) - return; + { + if (ctx->result.encrypt) /* check that we have allocated it. */ + status_handler_finish (ctx); + return; + } test_and_allocate_result (ctx, encrypt); switch (code) { - case GPGME_STATUS_EOF: - if (ctx->result.encrypt->xmlinfo) - { - append_xml_encinfo (&ctx->result.encrypt->xmlinfo, NULL); - _gpgme_set_op_info (ctx, ctx->result.encrypt->xmlinfo); - ctx->result.encrypt->xmlinfo = NULL; - } - if (ctx->result.encrypt->no_valid_recipients) - ctx->error = mk_error (No_Recipients); - else if (ctx->result.encrypt->invalid_recipients) - ctx->error = mk_error (Invalid_Recipients); + case STATUS_EOF: + status_handler_finish (ctx); break; case GPGME_STATUS_INV_RECP: -- 2.26.2