X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=utf8%2Futf8-locale.c;h=28eeb4b24c8c1b7806c2b2a258f748fc7c9c6aad;hb=f908d7f1b11f6852672662bfe63e7e09f7a2b8ad;hp=058ef1801838838de1e040257b5679cf18279467;hpb=66503442b5e08a675bbe032427d540e07acda15b;p=gedcom-parse.git diff --git a/utf8/utf8-locale.c b/utf8/utf8-locale.c index 058ef18..28eeb4b 100644 --- a/utf8/utf8-locale.c +++ b/utf8/utf8-locale.c @@ -13,9 +13,10 @@ #include #include #include +#include #include "config.h" #include "libcharset.h" -#include "utf8-locale.h" +#include "utf8.h" #define INITIAL_OUTSIZE 256 @@ -69,8 +70,10 @@ char* convert_utf8_to_locale(const char* input, int *conv_fails) char *outptr; size_t nconv; - if (utf8_to_locale == (iconv_t) -1 && (open_conversion_contexts() == -1)) + if (utf8_to_locale == (iconv_t) -1 && (open_conversion_contexts() == -1)) { + if (conv_fails != NULL) *conv_fails = insize; return NULL; + } assert(utf8_to_locale != (iconv_t) -1); /* make sure we start from an empty state */ iconv(utf8_to_locale, NULL, NULL, NULL, NULL); @@ -112,6 +115,7 @@ char* convert_utf8_to_locale(const char* input, int *conv_fails) else { /* EINVAL should not happen, since we convert entire strings */ /* EBADF is an error which should be captured by the assert above */ + if (conv_fails != NULL) *conv_fails += insize; return NULL; } nconv = iconv(utf8_to_locale, &inptr, &insize, &outptr, &outsize);