texlive[59151] Build/source/texk/mendexk: ensure signed comparisons

commits+karl at tug.org commits+karl at tug.org
Sun May 9 23:27:28 CEST 2021


Revision: 59151
          http://tug.org/svn/texlive?view=revision&revision=59151
Author:   karl
Date:     2021-05-09 23:27:28 +0200 (Sun, 09 May 2021)
Log Message:
-----------
ensure signed comparisons are signed; new test

Modified Paths:
--------------
    trunk/Build/source/texk/mendexk/ChangeLog
    trunk/Build/source/texk/mendexk/fwrite.c
    trunk/Build/source/texk/mendexk/mendex.h
    trunk/Build/source/texk/mendexk/tests/mendex.test

Added Paths:
-----------
    trunk/Build/source/texk/mendexk/tests/rangetwo.idx
    trunk/Build/source/texk/mendexk/tests/rangetwo.ind
    trunk/Build/source/texk/mendexk/tests/rangetwo.ist

Modified: trunk/Build/source/texk/mendexk/ChangeLog
===================================================================
--- trunk/Build/source/texk/mendexk/ChangeLog	2021-05-09 21:26:29 UTC (rev 59150)
+++ trunk/Build/source/texk/mendexk/ChangeLog	2021-05-09 21:27:28 UTC (rev 59151)
@@ -1,3 +1,16 @@
+2021-05-09  Karl Berry  <karl at freefriends.org>
+
+	* mendex.h (page.attr): use int, not char, since we do signed
+	comparison and aarch64 apparently treats char as unsigned.
+	(index.words): use unsigned char for consistency.
+	* fwrite.c (printpage): factor out beginning/end page values.
+	* tests/rangetwo.idx,
+	* tests/rangetwo.ind,
+	* tests/rangetwo.ist: new simple test.
+	* tests/mendex.test: run the rangetwo test.
+	Report from Johannes Hielscher,
+	https://tug.org/pipermail/tlbuild/2021q1/004873.html.
+
 2021-03-23  Karl Berry  <karl at tug.org>
 
 	* TL'21.

Modified: trunk/Build/source/texk/mendexk/fwrite.c
===================================================================
--- trunk/Build/source/texk/mendexk/fwrite.c	2021-05-09 21:26:29 UTC (rev 59150)
+++ trunk/Build/source/texk/mendexk/fwrite.c	2021-05-09 21:27:28 UTC (rev 59151)
@@ -326,7 +326,11 @@
 	for(j=0;j<ind[num].num;j++) {
 		cc=range_check(ind[num],j,lbuff);
 		if (cc>j) {
-			if (pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0])==pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])) {
+			int epage = pnumconv(ind[num].p[cc].page,
+    		       	                     ind[num].p[cc].attr[0]);
+			int bpage = pnumconv(ind[num].p[j].page,
+			                     ind[num].p[j].attr[0]);
+			if (epage==bpage) {
 				j=cc-1;
 				continue;
 			}
@@ -337,20 +341,18 @@
 			if (strlen(ind[num].p[j].enc)>0) {
 				SPRINTF(buff,"%s%s%s",encap_prefix,ind[num].p[j].enc,encap_infix);
 			}
-			if (strlen(suffix_3p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==2) {
-				SAPPENDF(buff,"%s",ind[num].p[j].page);
+			/* print beginning of range */
+			SAPPENDF(buff,"%s",ind[num].p[j].page);
+			if (strlen(suffix_3p)>0 && (epage-bpage)==2) {
 				SAPPENDF(buff,"%s",suffix_3p);
 			}
-			else if (strlen(suffix_mp)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))>=2) {
-				SAPPENDF(buff,"%s",ind[num].p[j].page);
+			else if (strlen(suffix_mp)>0 && (epage-bpage)>=2) {
 				SAPPENDF(buff,"%s",suffix_mp);
 			}
-			else if (strlen(suffix_2p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==1) {
-				SAPPENDF(buff,"%s",ind[num].p[j].page);
+			else if (strlen(suffix_2p)>0 && (epage-bpage)==1) {
 				SAPPENDF(buff,"%s",suffix_2p);
 			}
 			else {
-				SAPPENDF(buff,"%s",ind[num].p[j].page);
 				SAPPENDF(buff,"%s",delim_r);
 				SAPPENDF(buff,"%s",ind[num].p[cc].page);
 			}

Modified: trunk/Build/source/texk/mendexk/mendex.h
===================================================================
--- trunk/Build/source/texk/mendexk/mendex.h	2021-05-09 21:26:29 UTC (rev 59150)
+++ trunk/Build/source/texk/mendexk/mendex.h	2021-05-09 21:27:28 UTC (rev 59151)
@@ -14,12 +14,12 @@
 struct page {
 	char *page;
 	char *enc;
-	char attr[3];
+	int attr[3];
 };
 
 struct index {
 	int num;
-	char words;
+	unsigned char words;
 	char *org[3];
 	char *dic[3];
 	char *idx[3];

Modified: trunk/Build/source/texk/mendexk/tests/mendex.test
===================================================================
--- trunk/Build/source/texk/mendexk/tests/mendex.test	2021-05-09 21:26:29 UTC (rev 59150)
+++ trunk/Build/source/texk/mendexk/tests/mendex.test	2021-05-09 21:27:28 UTC (rev 59151)
@@ -1,6 +1,6 @@
 #! /bin/sh -vx
 # $Id$
-# Copyright 2017 Karl Berry <tex-live at tug.org>
+# Copyright 2017-2021 Karl Berry <tex-live at tug.org>
 # Copyright 2013 Peter Breitenlohner <tex-live at tug.org>
 # You may freely use, modify and/or distribute this file.
 
@@ -24,13 +24,21 @@
 	>uni.ind2 2>uni.ilg2 \
 	&& diff $srcdir/tests/uni.ind uni.ind2 || exit 1
 
-# test for page_precedence
-./mendex -s $srcdir/tests/pprec0.ist $srcdir/tests/pprecA.idx -o pprecA-0.ind1 -t pprecA-0.ilg \
+# test for two-element range suffix_2p
+./mendex -s $srcdir/tests/rangetwo.ist $srcdir/tests/rangetwo.idx \
+	-o rangetwo.ind1 -t rangetwo.ilg \
+	&& diff $srcdir/tests/rangetwo.ind rangetwo.ind1 || exit 1
+
+# test for page_precedence and suffix_3p
+./mendex -s $srcdir/tests/pprec0.ist $srcdir/tests/pprecA.idx \
+	-o pprecA-0.ind1 -t pprecA-0.ilg \
 	&& diff $srcdir/tests/pprecA-0.ind pprecA-0.ind1 || exit 1
 
-./mendex -s $srcdir/tests/pprec1.ist $srcdir/tests/pprecA.idx -o pprecA-1.ind1 -t pprecA-1.ilg \
+./mendex -s $srcdir/tests/pprec1.ist $srcdir/tests/pprecA.idx \
+	-o pprecA-1.ind1 -t pprecA-1.ilg \
 	&& diff $srcdir/tests/pprecA-1.ind pprecA-1.ind1 || exit 1
 
-./mendex -s $srcdir/tests/pprec2.ist $srcdir/tests/pprecA.idx -o pprecA-2.ind1 -t pprecA-2.ilg \
+./mendex -s $srcdir/tests/pprec2.ist $srcdir/tests/pprecA.idx \
+	-o pprecA-2.ind1 -t pprecA-2.ilg \
 	&& diff $srcdir/tests/pprecA-2.ind pprecA-2.ind1 || exit 1
 

Added: trunk/Build/source/texk/mendexk/tests/rangetwo.idx
===================================================================
--- trunk/Build/source/texk/mendexk/tests/rangetwo.idx	                        (rev 0)
+++ trunk/Build/source/texk/mendexk/tests/rangetwo.idx	2021-05-09 21:27:28 UTC (rev 59151)
@@ -0,0 +1,2 @@
+\indexentry{entryA}{1}
+\indexentry{entryA}{2}


Property changes on: trunk/Build/source/texk/mendexk/tests/rangetwo.idx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Build/source/texk/mendexk/tests/rangetwo.ind
===================================================================
--- trunk/Build/source/texk/mendexk/tests/rangetwo.ind	                        (rev 0)
+++ trunk/Build/source/texk/mendexk/tests/rangetwo.ind	2021-05-09 21:27:28 UTC (rev 59151)
@@ -0,0 +1,5 @@
+\begin{theindex}
+
+  \item entryA, 1[[sfx2p]]
+
+\end{theindex}


Property changes on: trunk/Build/source/texk/mendexk/tests/rangetwo.ind
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Build/source/texk/mendexk/tests/rangetwo.ist
===================================================================
--- trunk/Build/source/texk/mendexk/tests/rangetwo.ist	                        (rev 0)
+++ trunk/Build/source/texk/mendexk/tests/rangetwo.ist	2021-05-09 21:27:28 UTC (rev 59151)
@@ -0,0 +1,2 @@
+suffix_2p "[[sfx2p]]"
+


Property changes on: trunk/Build/source/texk/mendexk/tests/rangetwo.ist
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property


More information about the tex-live-commits mailing list.