+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
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)
{
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)
{
}
}
if (old_lc)
- setlocale (LC_MESSAGES, old_lc);
+ {
+ setlocale (LC_MESSAGES, old_lc);
+ free (old_lc);
+ }
if (err)
goto leave;
}