From 2175b7cd4ecc9c78095c85a629d3e363cc86bd3d6e635e8999db3e80fcefa074 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Fri, 9 Jun 2023 17:41:39 +0000 Subject: [PATCH] - Add boo1209830-endless-loop.patch (boo1209830) avoid endless loop on processing some mandoc files. OBS-URL: https://build.opensuse.org/package/show/Documentation/mandoc?expand=0&rev=17 --- boo1209830-endless-loop.patch | 80 +++++++++++++++++++++++++++++++++++ mandoc.changes | 6 +++ mandoc.spec | 5 ++- 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 boo1209830-endless-loop.patch diff --git a/boo1209830-endless-loop.patch b/boo1209830-endless-loop.patch new file mode 100644 index 0000000..d244be3 --- /dev/null +++ b/boo1209830-endless-loop.patch @@ -0,0 +1,80 @@ +=================================================================== +RCS file: /cvsrepo/anoncvs/cvs/a/out.c,v +retrieving revision 1.54 +retrieving revision 1.55 +--- + out.c | 22 ++++++++++++++++++---- + 1 file changed, 18 insertions(+), 4 deletions(-) + +--- a/out.c ++++ b/out.c +@@ -1,4 +1,4 @@ +-/* $Id: out.c,v 1.82 2021/09/07 17:07:58 schwarze Exp $ */ ++/* $OpenBSD: out.c,v 1.55 2021/09/28 17:06:17 schwarze Exp $ */ + /* + * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons + * Copyright (c) 2011, 2014, 2015, 2017, 2018, 2019, 2021 +@@ -123,6 +123,7 @@ tblcalc(struct rofftbl *tbl, const struc + const struct tbl_dat *dp; + struct roffcol *col; + struct tbl_colgroup *first_group, **gp, *g; ++ size_t *colwidth; + size_t ewidth, min1, min2, wanted, width, xwidth; + int done, icol, maxcol, necol, nxcol, quirkcol; + +@@ -256,16 +257,28 @@ tblcalc(struct rofftbl *tbl, const struc + gp = &(*gp)->next; + } + ++ colwidth = mandoc_reallocarray(NULL, maxcol + 1, sizeof(*colwidth)); + while (first_group != NULL) { + + /* ++ * Rebuild the array of the widths of all columns ++ * participating in spans that require expansion. ++ */ ++ ++ for (icol = 0; icol <= maxcol; icol++) ++ colwidth[icol] = SIZE_MAX; ++ for (g = first_group; g != NULL; g = g->next) ++ for (icol = g->startcol; icol <= g->endcol; icol++) ++ colwidth[icol] = tbl->cols[icol].width; ++ ++ /* + * Find the smallest and second smallest column width + * among the columns which may need expamsion. + */ + + min1 = min2 = SIZE_MAX; + for (icol = 0; icol <= maxcol; icol++) { +- width = tbl->cols[icol].width; ++ width = colwidth[icol]; + if (min1 > width) { + min2 = min1; + min1 = width; +@@ -283,7 +296,7 @@ tblcalc(struct rofftbl *tbl, const struc + for (g = first_group; g != NULL; g = g->next) { + necol = 0; + for (icol = g->startcol; icol <= g->endcol; icol++) +- if (tbl->cols[icol].width == min1) ++ if (colwidth[icol] == min1) + necol++; + if (necol == 0) + continue; +@@ -300,7 +313,7 @@ tblcalc(struct rofftbl *tbl, const struc + while ((g = *gp) != NULL) { + done = 0; + for (icol = g->startcol; icol <= g->endcol; icol++) { +- if (tbl->cols[icol].width != min1) ++ if (colwidth[icol] != min1) + continue; + if (g->wanted <= wanted - min1) { + tbl->cols[icol].width += g->wanted; +@@ -317,6 +330,7 @@ tblcalc(struct rofftbl *tbl, const struc + gp = &(*gp)->next; + } + } ++ free(colwidth); + + /* + * Align numbers with text. diff --git a/mandoc.changes b/mandoc.changes index d0ce3e4..4463fb1 100644 --- a/mandoc.changes +++ b/mandoc.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Jun 9 16:23:30 UTC 2023 - Matej Cepl + +- Add boo1209830-endless-loop.patch (boo1209830) avoid endless + loop on processing some mandoc files. + ------------------------------------------------------------------- Fri Dec 2 09:23:26 UTC 2022 - Dominique Leuenberger diff --git a/mandoc.spec b/mandoc.spec index 018229c..5a9531b 100644 --- a/mandoc.spec +++ b/mandoc.spec @@ -1,7 +1,7 @@ # # spec file for package mandoc # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -25,6 +25,9 @@ License: ISC Group: Productivity/Publishing/Troff URL: http://mandoc.bsd.lv/ Source: http://mandoc.bsd.lv/snapshots/mandoc-%{version}.tar.gz +# PATCH-FIX-UPSTREAM boo1209830-endless-loop.patch bsc#1209830 mcepl@suse.com +# Fix endless loop +Patch0: boo1209830-endless-loop.patch BuildRequires: less BuildRequires: zlib-devel Requires: %{name}-bin = %{version}