* engine-gpgsm.c (_gpgme_gpgsm_new): Save the result of a first

setlocale before doing another setlocale.
This commit is contained in:
Werner Koch 2002-11-22 15:02:37 +00:00
parent 8cc8f7267f
commit 9ab4638c8d
2 changed files with 35 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2002-11-22 Werner Koch <wk@gnupg.org>
* engine-gpgsm.c (_gpgme_gpgsm_new): Save the result of a first
setlocale before doing another setlocale.
2002-11-21 Marcus Brinkmann <marcus@g10code.de>
* verify.c (_gpgme_verify_status_handler): Treat

View File

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