From 2023d2241becdffb19b0a3fee74eab830e3eb00f Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 22 Nov 2002 15:02:37 +0000 Subject: [PATCH] * engine-gpgsm.c (_gpgme_gpgsm_new): Save the result of a first setlocale before doing another setlocale. --- branches/gpgme-0-3-branch/gpgme/ChangeLog | 5 +++ .../gpgme-0-3-branch/gpgme/engine-gpgsm.c | 34 ++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/branches/gpgme-0-3-branch/gpgme/ChangeLog b/branches/gpgme-0-3-branch/gpgme/ChangeLog index 78ac092..925f20c 100644 --- a/branches/gpgme-0-3-branch/gpgme/ChangeLog +++ b/branches/gpgme-0-3-branch/gpgme/ChangeLog @@ -1,3 +1,8 @@ +2002-11-22 Werner Koch + + * engine-gpgsm.c (_gpgme_gpgsm_new): Save the result of a first + setlocale before doing another setlocale. + 2002-11-21 Marcus Brinkmann * verify.c (_gpgme_verify_status_handler): Treat diff --git a/branches/gpgme-0-3-branch/gpgme/engine-gpgsm.c b/branches/gpgme-0-3-branch/gpgme/engine-gpgsm.c index 6d98a9d..41e63f5 100644 --- a/branches/gpgme-0-3-branch/gpgme/engine-gpgsm.c +++ b/branches/gpgme-0-3-branch/gpgme/engine-gpgsm.c @@ -450,7 +450,17 @@ _gpgme_gpgsm_new (GpgsmObject *r_gpgsm) goto leave; } } + old_lc = setlocale (LC_CTYPE, NULL); + if (old_lc) + { + old_lc = strdup (old_lc); + if (!old_lc) + { + err = GPGME_Out_Of_Core; + goto leave; + } + } dft_lc = setlocale (LC_CTYPE, ""); if (dft_lc) { @@ -458,19 +468,32 @@ _gpgme_gpgsm_new (GpgsmObject *r_gpgsm) err = mk_error (Out_Of_Core); else { - err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL, NULL, NULL, NULL, - NULL); + err = assuan_transact (gpgsm->assuan_ctx, optstr, NULL, NULL, + NULL, NULL, NULL, NULL); free (optstr); if (err) err = map_assuan_error (err); } } if (old_lc) - setlocale (LC_CTYPE, old_lc); + { + setlocale (LC_CTYPE, old_lc); + free (old_lc); + } if (err) goto leave; + old_lc = setlocale (LC_MESSAGES, NULL); + if (old_lc) + { + old_lc = strdup (old_lc); + if (!old_lc) + { + err = GPGME_Out_Of_Core; + goto leave; + } + } dft_lc = setlocale (LC_MESSAGES, ""); if (dft_lc) { @@ -486,7 +509,10 @@ _gpgme_gpgsm_new (GpgsmObject *r_gpgsm) } } if (old_lc) - setlocale (LC_MESSAGES, old_lc); + { + setlocale (LC_MESSAGES, old_lc); + free (old_lc); + } if (err) goto leave; } -- 2.26.2