From c383737b31c54473b4506e8b0c23db188755e440 Mon Sep 17 00:00:00 2001 From: Takuji Tanaka Date: Mon, 10 Apr 2023 13:17:12 +0000 Subject: upbibtex: fix bug of substring$ (Y. Morimi) git-svn-id: svn://tug.org/texlive/trunk@66818 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/bibtex-x/ChangeLog | 5 ++ Build/source/texk/bibtex-x/tests/substra.bbl | 30 ++++++++++ Build/source/texk/bibtex-x/tests/substru.bbl | 80 +++++++++++++++++++++++++ Build/source/texk/bibtex-x/tests/testsubstr.bst | 5 ++ Build/source/texk/web2c/uptexdir/ChangeLog | 6 ++ Build/source/texk/web2c/uptexdir/upbibtex.ch | 17 ++++++ 6 files changed, 143 insertions(+) diff --git a/Build/source/texk/bibtex-x/ChangeLog b/Build/source/texk/bibtex-x/ChangeLog index 04a103d84ec..8ea45a55c49 100644 --- a/Build/source/texk/bibtex-x/ChangeLog +++ b/Build/source/texk/bibtex-x/ChangeLog @@ -1,3 +1,8 @@ +2023-04-10 TANAKA Takuji + + * tests/substr[au].bbl, tests/testsubstr.bst: + Add more tests for substring$. + 2023-01-29 Karl Berry * tests/bibtexu-sort.test, diff --git a/Build/source/texk/bibtex-x/tests/substra.bbl b/Build/source/texk/bibtex-x/tests/substra.bbl index 9b182f7f23b..fafdba390c3 100644 --- a/Build/source/texk/bibtex-x/tests/substra.bbl +++ b/Build/source/texk/bibtex-x/tests/substra.bbl @@ -55,6 +55,11 @@ \item[-6 3] tu \item[-7 2] t \item[-8 1] +\item[1 1, 1 1] A +\item[2 1, 1 1] B +\item[3 1, 1 1] C +\item[4 1, 1 1] D +\item[5 1, 1 1] E \item[orig] ~ \item[1 5] \item[1 4] @@ -110,6 +115,11 @@ \item[-6 3] ~ \item[-7 2] ~ \item[-8 1] ~ +\item[1 1, 1 1] +\item[2 1, 1 1] +\item[3 1, 1 1] +\item[4 1, 1 1] +\item[5 1, 1 1] \item[orig] {AB}CDEFG tuvwx{yz} \item[1 5] {AB}C \item[1 4] {AB} @@ -165,6 +175,11 @@ \item[-6 3] uvw \item[-7 2] uv \item[-8 1] u +\item[1 1, 1 1] { +\item[2 1, 1 1] A +\item[3 1, 1 1] B +\item[4 1, 1 1] } +\item[5 1, 1 1] C \item[orig] {{AB}CD}EFG tuv{wx{yz}} \item[1 5] {{AB} \item[1 4] {{AB @@ -220,6 +235,11 @@ \item[-6 3] {wx \item[-7 2] {w \item[-8 1] { +\item[1 1, 1 1] { +\item[2 1, 1 1] { +\item[3 1, 1 1] A +\item[4 1, 1 1] B +\item[5 1, 1 1] } \item[orig] {{}}~{{}} \item[1 5] {{} \item[1 4] {{ @@ -275,6 +295,11 @@ \item[-6 3] { \item[-7 2] { \item[-8 1] { +\item[1 1, 1 1] { +\item[2 1, 1 1] { +\item[3 1, 1 1] +\item[4 1, 1 1] +\item[5 1, 1 1] } \item[orig] {\a}{\b}{\c} \item[1 5] {\a} \item[1 4] {\a} @@ -330,5 +355,10 @@ \item[-6 3] { \item[-7 2] \item[-8 1] +\item[1 1, 1 1] { +\item[2 1, 1 1] \ +\item[3 1, 1 1] a +\item[4 1, 1 1] } +\item[5 1, 1 1] \end{itemize} \endinput diff --git a/Build/source/texk/bibtex-x/tests/substru.bbl b/Build/source/texk/bibtex-x/tests/substru.bbl index 48e2601b8e5..c8b6ef5f7c7 100644 --- a/Build/source/texk/bibtex-x/tests/substru.bbl +++ b/Build/source/texk/bibtex-x/tests/substru.bbl @@ -55,6 +55,11 @@ \item[-6 3] tu \item[-7 2] t \item[-8 1] +\item[1 1, 1 1] A +\item[2 1, 1 1] B +\item[3 1, 1 1] C +\item[4 1, 1 1] D +\item[5 1, 1 1] E \item[orig] ÅÇÈÎØÜÝ~åçèîøüý \item[1 5] ÅÇÈÎØ \item[1 4] ÅÇÈÎ @@ -110,6 +115,11 @@ \item[-6 3] ~åç \item[-7 2] ~å \item[-8 1] ~ +\item[1 1, 1 1] Å +\item[2 1, 1 1] Ç +\item[3 1, 1 1] È +\item[4 1, 1 1] Î +\item[5 1, 1 1] Ø \item[orig] AÇう冤EÜЖ~tçユ漆𡚴xюω \item[1 5] AÇう冤E \item[1 4] AÇう冤 @@ -165,6 +175,11 @@ \item[-6 3] tçユ \item[-7 2] tç \item[-8 1] t +\item[1 1, 1 1] A +\item[2 1, 1 1] Ç +\item[3 1, 1 1] う +\item[4 1, 1 1] 冤 +\item[5 1, 1 1] E \item[orig] {AB}CDEFG tuvwx{yz} \item[1 5] {AB}C \item[1 4] {AB} @@ -220,6 +235,11 @@ \item[-6 3] uvw \item[-7 2] uv \item[-8 1] u +\item[1 1, 1 1] { +\item[2 1, 1 1] A +\item[3 1, 1 1] B +\item[4 1, 1 1] } +\item[5 1, 1 1] C \item[orig] {\a}Åå{\b}Ææ{\c}Çç \item[1 5] {\a}Å \item[1 4] {\a} @@ -275,6 +295,11 @@ \item[-6 3] Ææ{ \item[-7 2] Ææ \item[-8 1] Æ +\item[1 1, 1 1] { +\item[2 1, 1 1] \ +\item[3 1, 1 1] a +\item[4 1, 1 1] } +\item[5 1, 1 1] Å \item[orig] {\a}αあ{\b}βい{\c}γう \item[1 5] {\a}α \item[1 4] {\a} @@ -330,6 +355,11 @@ \item[-6 3] βい{ \item[-7 2] βい \item[-8 1] β +\item[1 1, 1 1] { +\item[2 1, 1 1] \ +\item[3 1, 1 1] a +\item[4 1, 1 1] } +\item[5 1, 1 1] α \item[orig] {\a}あα{\b}いβ{\c}うγ \item[1 5] {\a}あ \item[1 4] {\a} @@ -385,6 +415,11 @@ \item[-6 3] いβ{ \item[-7 2] いβ \item[-8 1] い +\item[1 1, 1 1] { +\item[2 1, 1 1] \ +\item[3 1, 1 1] a +\item[4 1, 1 1] } +\item[5 1, 1 1] あ \item[orig] {{AB}CD}EFG tuv{wx{yz}} \item[1 5] {{AB} \item[1 4] {{AB @@ -440,6 +475,11 @@ \item[-6 3] {wx \item[-7 2] {w \item[-8 1] { +\item[1 1, 1 1] { +\item[2 1, 1 1] { +\item[3 1, 1 1] A +\item[4 1, 1 1] B +\item[5 1, 1 1] } \item[orig] {{ÅÇ}ÈÎ}ØÜÝ~åçè{îø{üý}} \item[1 5] {{ÅÇ} \item[1 4] {{ÅÇ @@ -495,6 +535,11 @@ \item[-6 3] {îø \item[-7 2] {î \item[-8 1] { +\item[1 1, 1 1] { +\item[2 1, 1 1] { +\item[3 1, 1 1] Å +\item[4 1, 1 1] Ç +\item[5 1, 1 1] } \item[orig] {{一二}三四}五六七 肆伍陸{漆捌{玖拾}} \item[1 5] {{一二} \item[1 4] {{一二 @@ -550,6 +595,11 @@ \item[-6 3] {漆捌 \item[-7 2] {漆 \item[-8 1] { +\item[1 1, 1 1] { +\item[2 1, 1 1] { +\item[3 1, 1 1] 一 +\item[4 1, 1 1] 二 +\item[5 1, 1 1] } \item[orig] {{櫛杓}屠冤}𦥑𠮟𠀋𡈽𥝱𨦇𡚴{𠷡𧘕{𧘔𩸽}} \item[1 5] {{櫛杓} @@ -606,6 +656,11 @@ \item[-6 3] {𠷡𧘕 \item[-7 2] {𠷡 \item[-8 1] { +\item[1 1, 1 1] { +\item[2 1, 1 1] { +\item[3 1, 1 1] 櫛 +\item[4 1, 1 1] 杓 +\item[5 1, 1 1] } \item[orig] ΑΒΓΔΕΖΗ στυφχψω \item[1 5] ΑΒΓΔΕ \item[1 4] ΑΒΓΔ @@ -661,6 +716,11 @@ \item[-6 3] στ \item[-7 2] σ \item[-8 1] +\item[1 1, 1 1] Α +\item[2 1, 1 1] Β +\item[3 1, 1 1] Γ +\item[4 1, 1 1] Δ +\item[5 1, 1 1] Ε \item[orig] АБВГДЕЖ щъыьэюя \item[1 5] АБВГД \item[1 4] АБВГ @@ -716,6 +776,11 @@ \item[-6 3] щъ \item[-7 2] щ \item[-8 1] +\item[1 1, 1 1] А +\item[2 1, 1 1] Б +\item[3 1, 1 1] В +\item[4 1, 1 1] Г +\item[5 1, 1 1] Д \item[orig] あいうえおかき ユヨワヰヱヲン \item[1 5] あいうえお \item[1 4] あいうえ @@ -771,6 +836,11 @@ \item[-6 3]  ユヨ \item[-7 2]  ユ \item[-8 1]   +\item[1 1, 1 1] あ +\item[2 1, 1 1] い +\item[3 1, 1 1] う +\item[4 1, 1 1] え +\item[5 1, 1 1] お \item[orig] 一二三四五六七 肆伍陸漆捌玖拾 \item[1 5] 一二三四五 \item[1 4] 一二三四 @@ -826,6 +896,11 @@ \item[-6 3]  肆伍 \item[-7 2]  肆 \item[-8 1]   +\item[1 1, 1 1] 一 +\item[2 1, 1 1] 二 +\item[3 1, 1 1] 三 +\item[4 1, 1 1] 四 +\item[5 1, 1 1] 五 \item[orig] 櫛杓屠冤𦥑𠮟𠀋𡈽𥝱𨦇𡚴𠷡𧘕𧘔𩸽 \item[1 5] 櫛杓屠冤𦥑 \item[1 4] 櫛杓屠冤 @@ -881,5 +956,10 @@ \item[-6 3] 𡈽𥝱𨦇 \item[-7 2] 𡈽𥝱 \item[-8 1] 𡈽 +\item[1 1, 1 1] 櫛 +\item[2 1, 1 1] 杓 +\item[3 1, 1 1] 屠 +\item[4 1, 1 1] 冤 +\item[5 1, 1 1] 𦥑 \end{itemize} \endinput diff --git a/Build/source/texk/bibtex-x/tests/testsubstr.bst b/Build/source/texk/bibtex-x/tests/testsubstr.bst index a332f82a000..206267d8115 100644 --- a/Build/source/texk/bibtex-x/tests/testsubstr.bst +++ b/Build/source/texk/bibtex-x/tests/testsubstr.bst @@ -60,6 +60,11 @@ FUNCTION {output_entry} { "\item[-6 3] " field #-6 #3 substring$ * write$ newline$ "\item[-7 2] " field #-7 #2 substring$ * write$ newline$ "\item[-8 1] " field #-8 #1 substring$ * write$ newline$ + "\item[1 1, 1 1] " field #1 #1 substring$ #1 #1 substring$ * write$ newline$ + "\item[2 1, 1 1] " field #2 #1 substring$ #1 #1 substring$ * write$ newline$ + "\item[3 1, 1 1] " field #3 #1 substring$ #1 #1 substring$ * write$ newline$ + "\item[4 1, 1 1] " field #4 #1 substring$ #1 #1 substring$ * write$ newline$ + "\item[5 1, 1 1] " field #5 #1 substring$ #1 #1 substring$ * write$ newline$ } FUNCTION {type} {output_entry} diff --git a/Build/source/texk/web2c/uptexdir/ChangeLog b/Build/source/texk/web2c/uptexdir/ChangeLog index 137cffbc72d..0f700a0f45f 100644 --- a/Build/source/texk/web2c/uptexdir/ChangeLog +++ b/Build/source/texk/web2c/uptexdir/ChangeLog @@ -1,3 +1,9 @@ +2023-04-10 TANAKA Takuji + + * upbibtex.ch: Fix bug of substring$ + from Yukimasa Morimi san: + https://github.com/texjporg/tex-jp-build/issues/157 + 2023-03-29 TANAKA Takuji * wcfname.test: diff --git a/Build/source/texk/web2c/uptexdir/upbibtex.ch b/Build/source/texk/web2c/uptexdir/upbibtex.ch index e244606e6eb..fa46baba64a 100644 --- a/Build/source/texk/web2c/uptexdir/upbibtex.ch +++ b/Build/source/texk/web2c/uptexdir/upbibtex.ch @@ -743,6 +743,23 @@ begin pop_lit2_saved := pop_lit2; {save before negate} @z +@x 2023-04-08 texjporg/tex-jp-build#157 + str_start[pop_lit3+1] := sp_end; +@y + { |2..4| bytes Kanji code break check } + tpe:=str_start[pop_lit3]; + mbl_tpe:=0; + while tpe < str_start[pop_lit3+1] do begin + mbl_tpe := multibytelen(str_pool[tpe]); + if mbl_tpe<0 {just in case} + or (str_start[pop_lit3+1] < tpe+mbl_tpe) then + break; + tpe := tpe + mbl_tpe; + if sp_end<=tpe then break; + end; + str_start[pop_lit3+1] := tpe; +@z + @x Changes for JBibTeX by Shouichi Matsui [438] + fix (2022-02-20 j0.34) str_room(sp_end - sp_ptr); while (sp_ptr < sp_end) do {shift the substring} -- cgit v1.2.3