summaryrefslogtreecommitdiff
path: root/Build/source/texk/bibtex-x/bibtex-2.c
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2019-03-05 04:23:59 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2019-03-05 04:23:59 +0000
commit94290dfdfc82de21f15e874262d39afeb2a47fe5 (patch)
treea65e103c4010e673a98e7935b870466db17e5f6b /Build/source/texk/bibtex-x/bibtex-2.c
parent042191de3851e357b88fe9b351504cff15e0c55a (diff)
use u_strFromUTF8WithSub() with a change U_SENTINEL ---> 0xfffd
git-svn-id: svn://tug.org/texlive/trunk@50234 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/bibtex-x/bibtex-2.c')
-rw-r--r--Build/source/texk/bibtex-x/bibtex-2.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/Build/source/texk/bibtex-x/bibtex-2.c b/Build/source/texk/bibtex-x/bibtex-2.c
index 9d6203affe1..3d0b07aedc0 100644
--- a/Build/source/texk/bibtex-x/bibtex-2.c
+++ b/Build/source/texk/bibtex-x/bibtex-2.c
@@ -2962,27 +2962,30 @@ we use "-o" to indicate the rule of conpare. 23/sep/2009
/*
icu_toUChars() seems not working here, using u_strFromUTF8 instead. (04/mar/2019)
*/
+
+/*
+On Windows, u_strFromUTF8() fails but u_strFromUTF8WithSub()
+with U_SENTINEL (-1) ---> 0xfffd works.
+So I use u_strFromUTF8WithSub() by replacing 0xffffffff --> 0xfffd.
+--ak (05/mar/2019)
+*/
+
/*
uchlen1 = icu_toUChars(entry_strs, (ptr1 * (ENT_STR_SIZE+1)), lenk1, uch1, ucap);
uchlen2 = icu_toUChars(entry_strs, (ptr2 * (ENT_STR_SIZE+1)), lenk2, uch2, ucap);
*/
- u_strFromUTF8(uch1, ucap, &uchlen1, (char *)&ENTRY_STRS(ptr1, 0), lenk1, &err1);
- u_strFromUTF8(uch2, ucap, &uchlen2, (char *)&ENTRY_STRS(ptr2, 0), lenk2, &err1);
+ u_strFromUTF8WithSub(uch1, ucap, &uchlen1, (char *)&ENTRY_STRS(ptr1, 0), lenk1, 0xfffd, NULL, &err1);
+ u_strFromUTF8WithSub(uch2, ucap, &uchlen2, (char *)&ENTRY_STRS(ptr2, 0), lenk2, 0xfffd, NULL, &err1);
/*
- In my Windows build, the above fails: err1 != U_ZERO_ERROR, which
- gives access violation in ucol_open(). Maybe my ICU build is wrong.
- In this case I use the original functions which seem not working,
- only to avoid a crash by access violation. Thus I cannot support
- correct behavior for bibtexu on Windows. -- A. Kakuto 2019/03/05
+ If err1 != U_ZERO_ERROR, we use the original functions.
*/
if (!U_SUCCESS(err1)) {
uchlen1 = icu_toUChars(entry_strs, (ptr1 * (ENT_STR_SIZE+1)), lenk1, uch1, ucap);
uchlen2 = icu_toUChars(entry_strs, (ptr2 * (ENT_STR_SIZE+1)), lenk2, uch2, ucap);
- }
-
err1 = U_ZERO_ERROR;
+ }
if(Flag_location)
ucol1 = ucol_open(Str_location, &err1);