Submitted By: Ken Moffat Date: 2016-10-07 Initial Package Version: 20160523 Upstream Status: Applied Origin: Upstream, svn revisions 41497, 41498, 42110 Description: Fixes segfault in upmendex and allows ht4xe{,la}tex to work with 2016 version of xetex. diff -Naur a/texk/README b/texk/README --- a/texk/README 2016-04-20 00:51:42.000000000 +0100 +++ b/texk/README 2016-10-07 03:15:27.491849612 +0100 @@ -98,7 +98,7 @@ ttfdump - ? -upmendex 0.50 - +upmendex 0.51 - by Takuji Tanaka http://www.ctan.org/pkg/upmendex http://www.t-lab.opal.ne.jp/tex/uptex_en.html diff -Naur a/texk/tex4htk/tex4ht.c b/texk/tex4htk/tex4ht.c --- a/texk/tex4htk/tex4ht.c 2016-06-26 23:08:58.000000000 +0100 +++ b/texk/tex4htk/tex4ht.c 2016-10-07 03:19:28.834666452 +0100 @@ -6809,8 +6809,8 @@ || ((ch != 2 -) && (ch != -5 +) && (ch > +10 )) ) bad_dvi; diff -Naur a/texk/upmendex/ChangeLog b/texk/upmendex/ChangeLog --- a/texk/upmendex/ChangeLog 2016-02-12 16:05:24.000000000 +0000 +++ b/texk/upmendex/ChangeLog 2016-10-07 03:15:27.491849612 +0100 @@ -1,3 +1,9 @@ +2016-06-19 TANAKA Takuji + + * version 0.51 Beta version. + * fwrite.c: Fix bug of option "hanzi_head" in style file. + Thanks to Dr. Werner Fink. + 2016-02-12 Karl Berry * configure.ac (KPSE_CXX_HACK): add to avoid usual libstdc++.so diff -Naur a/texk/upmendex/fwrite.c b/texk/upmendex/fwrite.c --- a/texk/upmendex/fwrite.c 2016-02-09 11:02:48.000000000 +0000 +++ b/texk/upmendex/fwrite.c 2016-10-07 03:15:27.492849636 +0100 @@ -67,33 +67,38 @@ static void fprint_uchar(FILE *fp, const UChar *a, const int mode, const int len) { - int k; - char str[15], *ret; - UChar istr[5]; + char str[3*INITIALLENGTH+1]; + UChar istr[INITIALLENGTH]; int olen, wclen; UErrorCode perr; if (len<0) { - for (k=0; a[k] || k<4; k++) istr[k]=a[k]; - wclen=k; + u_strcpy(istr,a); + wclen=u_strlen(istr); } else { - wclen = is_surrogate_pair(a) ? 2 : 1; + wclen=is_surrogate_pair(a) ? 2 : 1; istr[0]=a[0]; if (wclen==2) istr[1]=a[1]; + istr[wclen]=L'\0'; } - istr[wclen]=L'\0'; if (mode==M_TO_UPPER) { - perr = U_ZERO_ERROR; - u_strToUpper(istr,5,istr,wclen,"",&perr); + perr=U_ZERO_ERROR; + olen=u_strToUpper(istr,INITIALLENGTH,istr,wclen,"",&perr); } else if (mode==M_TO_LOWER) { - perr = U_ZERO_ERROR; - u_strToLower(istr,5,istr,wclen, istr[0]==0x130&&turkish_i?"tr":"", &perr); + perr=U_ZERO_ERROR; + olen=u_strToLower(istr,INITIALLENGTH,istr,wclen, istr[0]==0x130&&turkish_i?"tr":"", &perr); } else if (mode==M_TO_TITLE) { - perr = U_ZERO_ERROR; - u_strToTitle(istr,5,istr,wclen,NULL,"",&perr); - } - perr = U_ZERO_ERROR; - ret = u_strToUTF8(str, 15, &olen, istr, wclen, &perr); + perr=U_ZERO_ERROR; + olen=u_strToTitle(istr,INITIALLENGTH,istr,wclen,NULL,"",&perr); + } else + olen=wclen; + if (olen>INITIALLENGTH) { + warn_printf(efp, "\nWarning, Too long (%d) header.\n", olen); + wclen=INITIALLENGTH; + } else + wclen=olen; + perr=U_ZERO_ERROR; + u_strToUTF8(str, 3*INITIALLENGTH+1, &olen, istr, wclen, &perr); fprintf(fp,"%s",str); } @@ -844,7 +849,7 @@ static int init_hanzi_header(void) { UChar strX[2],*pch0,*pch1; - int k, hzmode; + int k, hzmode, len; struct hanzi_index *hz_idx_init; strX[0]=0x5B57; strX[1]=L'\0'; @@ -878,21 +883,18 @@ for (k=0;k0) { - if (pch1-pch0>=INITIALLENGTH) { - warn_printf(efp, "\nWarning, Too long hanzi header.\n"); - break; - } - u_strncpy(hz_index[k].idx,pch0,pch1-pch0); - hz_index[k].idx[pch1-pch0]=L'\0'; - pch0=pch1+1; + len=pch1-pch0; } else { - if (u_strlen(pch0)>=INITIALLENGTH) { - warn_printf(efp, "\nWarning, Too long hanzi header.\n"); - break; - } - u_strcpy(hz_index[k].idx,pch0); - break; + len=u_strlen(pch0); } + if (len>=INITIALLENGTH) { + warn_printf(efp, "\nWarning, Too long (%d) hanzi header.\n", len); + len=INITIALLENGTH-1; + } + u_strncpy(hz_index[k].idx,pch0,len); + hz_index[k].idx[len]=L'\0'; + if (pch1>0) pch0=pch1+1; + else break; } return hzmode; diff -Naur a/texk/upmendex/main.c b/texk/upmendex/main.c --- a/texk/upmendex/main.c 2016-02-09 23:44:45.000000000 +0000 +++ b/texk/upmendex/main.c 2016-10-07 03:15:27.492849636 +0100 @@ -19,7 +19,7 @@ #endif KpathseaSupportInfo kp_ist,kp_dict; -#define VERSION "version 0.50" +#define VERSION "version 0.51" int main(int argc, char **argv) {