diff options
author | joerg <joerg> | 2017-02-21 16:01:36 +0000 |
---|---|---|
committer | joerg <joerg> | 2017-02-21 16:01:36 +0000 |
commit | 8cf078dd81eb21d8a7a7ebed8d6d59176d840bec (patch) | |
tree | e9eecfe403dfdb84170592c2ccbfd38bf55a5500 /print/scribus | |
parent | bd4563fb8f91d15aa2e694a7af5808d3c9e97942 (diff) | |
download | pkgsrc-8cf078dd81eb21d8a7a7ebed8d6d59176d840bec.tar.gz |
Cut down the number of loops in the roman number parser. The existing
logic triggers a super-linear memory use path in Clang and is generally
overcomplicated. Bump revision because it is still a code change.
Diffstat (limited to 'print/scribus')
-rw-r--r-- | print/scribus/Makefile | 4 | ||||
-rw-r--r-- | print/scribus/distinfo | 3 | ||||
-rw-r--r-- | print/scribus/patches/patch-scribus_util.cpp | 120 |
3 files changed, 124 insertions, 3 deletions
diff --git a/print/scribus/Makefile b/print/scribus/Makefile index 485ce89915f..0aba46443f2 100644 --- a/print/scribus/Makefile +++ b/print/scribus/Makefile @@ -1,7 +1,7 @@ -# $NetBSD: Makefile,v 1.107 2017/01/01 14:43:54 wiz Exp $ +# $NetBSD: Makefile,v 1.108 2017/02/21 16:01:36 joerg Exp $ DISTNAME= scribus-1.3.3.14 -PKGREVISION= 26 +PKGREVISION= 27 CATEGORIES= print MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=scribus/} EXTRACT_SUFX= .tar.bz2 diff --git a/print/scribus/distinfo b/print/scribus/distinfo index 07bcc195845..a7a3ef24838 100644 --- a/print/scribus/distinfo +++ b/print/scribus/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.27 2016/04/01 16:59:38 jperkin Exp $ +$NetBSD: distinfo,v 1.28 2017/02/21 16:01:36 joerg Exp $ SHA1 (scribus-1.3.3.14.tar.bz2) = 3ad5341fb815e2782aa4d817025d74af4a7c78e1 RMD160 (scribus-1.3.3.14.tar.bz2) = b0f35060eb61f033cb86ee644d5c88222b534596 @@ -15,3 +15,4 @@ SHA1 (patch-scribus_cupsoptions.cpp) = 92eb7dd8b0caf1efb2019b8e10b25daf1499f870 SHA1 (patch-scribus_plugins_scriptplugin_runscriptdialog.cpp) = 75e9dfbc1b0c6fce3f9c5dc1f1eba62e4a1525a0 SHA1 (patch-scribus_plugins_scriptplugin_runscriptdialog.h) = f4399a4b9352b61ca5a0c8e3f3be908f3d925b55 SHA1 (patch-scribus_printerutil.cpp) = 5a6d7b3d7dc327473b14dc5dcbe74f4fdb8a724b +SHA1 (patch-scribus_util.cpp) = bea28ff335251984dce41bd1023573b9f2ac21ce diff --git a/print/scribus/patches/patch-scribus_util.cpp b/print/scribus/patches/patch-scribus_util.cpp new file mode 100644 index 00000000000..a3270272058 --- /dev/null +++ b/print/scribus/patches/patch-scribus_util.cpp @@ -0,0 +1,120 @@ +$NetBSD: patch-scribus_util.cpp,v 1.1 2017/02/21 16:01:36 joerg Exp $ + +Simplify logic to avoid expensive nested loop handling in Clang. + +--- scribus/util.cpp.orig 2017-02-21 14:56:16.278339690 +0000 ++++ scribus/util.cpp +@@ -1412,15 +1412,15 @@ const QString arabicToRoman(uint i) + roman += "m"; + arabic -= 1000000; + } +- while (arabic - 900000 >= 0){ ++ if (arabic - 900000 >= 0){ + roman += "cm"; + arabic -= 900000; + } +- while (arabic - 500000 >= 0){ ++ if (arabic - 500000 >= 0){ + roman += "d"; + arabic -= 500000; + } +- while (arabic - 400000 >= 0){ ++ if (arabic - 400000 >= 0){ + roman += "cd"; + arabic -= 400000; + } +@@ -1428,15 +1428,15 @@ const QString arabicToRoman(uint i) + roman += "c"; + arabic -= 100000; + } +- while (arabic - 90000 >= 0){ ++ if (arabic - 90000 >= 0){ + roman += "xc"; + arabic -= 90000; + } +- while (arabic - 50000 >= 0){ ++ if (arabic - 50000 >= 0){ + roman += "l"; + arabic -= 50000; + } +- while (arabic - 40000 >= 0){ ++ if (arabic - 40000 >= 0){ + roman += "xl"; + arabic -= 40000; + } +@@ -1444,15 +1444,15 @@ const QString arabicToRoman(uint i) + roman += "x"; + arabic -= 10000; + } +- while (arabic - 9000 >= 0){ ++ if (arabic - 9000 >= 0){ + roman += "Mx"; + arabic -= 9000; + } +- while (arabic - 5000 >= 0){ ++ if (arabic - 5000 >= 0){ + roman += "v"; + arabic -= 5000; + } +- while (arabic - 4000 >= 0){ ++ if (arabic - 4000 >= 0){ + roman += "Mv"; + arabic -= 4000; + } +@@ -1460,15 +1460,15 @@ const QString arabicToRoman(uint i) + roman += "M"; + arabic -= 1000; + } +- while (arabic - 900 >= 0){ ++ if (arabic - 900 >= 0){ + roman += "CM"; + arabic -= 900; + } +- while (arabic - 500 >= 0){ ++ if (arabic - 500 >= 0){ + roman += "D"; + arabic -= 500; + } +- while (arabic - 400 >= 0){ ++ if (arabic - 400 >= 0){ + roman += "CD"; + arabic -= 400; + } +@@ -1476,15 +1476,15 @@ const QString arabicToRoman(uint i) + roman += "C"; + arabic -= 100; + } +- while (arabic - 90 >= 0){ ++ if (arabic - 90 >= 0){ + roman += "XC"; + arabic -= 90; + } +- while (arabic - 50 >= 0){ ++ if (arabic - 50 >= 0){ + roman += "L"; + arabic -= 50; + } +- while (arabic - 40 >= 0){ ++ if (arabic - 40 >= 0){ + roman += "XL"; + arabic -= 40; + } +@@ -1492,15 +1492,15 @@ const QString arabicToRoman(uint i) + roman += "X"; + arabic -= 10; + } +- while (arabic - 9 >= 0){ ++ if (arabic - 9 >= 0){ + roman += "IX"; + arabic -= 9; + } +- while (arabic - 5 >= 0){ ++ if (arabic - 5 >= 0){ + roman += "V"; + arabic -= 5; + } +- while (arabic - 4 >= 0){ ++ if (arabic - 4 >= 0){ + roman += "IV"; + arabic -= 4; + } |