diff options
author | Werner Koch <[email protected]> | 2002-11-22 15:02:37 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2002-11-22 15:02:37 +0000 |
commit | 9ab4638c8d3e1c7792e1d35775fabc42233224da (patch) | |
tree | edb4aa07de52d8191f7f0ddfefde32b410f62c85 | |
parent | 2002-11-21 Marcus Brinkmann <[email protected]> (diff) | |
download | gpgme-9ab4638c8d3e1c7792e1d35775fabc42233224da.tar.gz gpgme-9ab4638c8d3e1c7792e1d35775fabc42233224da.zip |
* engine-gpgsm.c (_gpgme_gpgsm_new): Save the result of a first
setlocale before doing another setlocale.
-rw-r--r-- | gpgme/ChangeLog | 5 | ||||
-rw-r--r-- | gpgme/engine-gpgsm.c | 34 |
2 files changed, 35 insertions, 4 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index 78ac092c..925f20c2 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -1,3 +1,8 @@ +2002-11-22 Werner Koch <[email protected]> + + * engine-gpgsm.c (_gpgme_gpgsm_new): Save the result of a first + setlocale before doing another setlocale. + 2002-11-21 Marcus Brinkmann <[email protected]> * verify.c (_gpgme_verify_status_handler): Treat diff --git a/gpgme/engine-gpgsm.c b/gpgme/engine-gpgsm.c index 6d98a9d5..41e63f57 100644 --- a/gpgme/engine-gpgsm.c +++ b/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; } |