Merge branch 'master' of github.com:pisilinux/main
This commit is contained in:
@@ -27,6 +27,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>8.11</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>8.11</Version>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<Summary>Cross platform application and UI framework</Summary>
|
||||
<Description>Cross platform application and UI development framework</Description>
|
||||
<License>'GPL3' 'LGPL3' 'FDL' 'custom'</License>
|
||||
<Archive sha1sum="f728a6b8a50e12d7da9b70c8093c484d48b33ca8" type="tarxz">http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtbase-opensource-src-5.6.2.tar.xz</Archive>
|
||||
<Archive sha1sum="a3ddcde8978d3a05bb4342fce364a792472a16e6" type="tarxz">http://download.qt.io/official_releases/qt/5.7/5.7.1/submodules/qtbase-opensource-src-5.7.1.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>at-spi2-core-devel</Dependency>
|
||||
<Dependency>cups-devel</Dependency>
|
||||
@@ -248,6 +248,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="6">
|
||||
<Date>2017-02-04</Date>
|
||||
<Version>5.7.1</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Stefan Gronewold(groni)</Name>
|
||||
<Email>groni@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="5">
|
||||
<Date>2016-10-21</Date>
|
||||
<Version>5.6.2</Version>
|
||||
@@ -284,4 +291,4 @@
|
||||
<Email>ertugrulerata@gmail.com</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
</PISI>
|
||||
|
||||
@@ -44,6 +44,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.20.7</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>1.20.7</Version>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>A library to encapsulate CD-ROM reading and control</Summary>
|
||||
<Description>This library provides an interface for CD-ROM access. It can be used by applications that need OS- and device-independent access to CD-ROM devices.</Description>
|
||||
<Archive sha1sum="530031897955729ddb7c850c183f234f7a6516b7" type="targz">mirrors://gnu/libcdio/libcdio-0.92.tar.gz</Archive>
|
||||
<Archive sha1sum="921f17842ea2bf3cd06ab3616849555aaae903ad" type="targz">mirrors://gnu/libcdio/libcdio-0.94.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>libgcc</Dependency>
|
||||
</BuildDependencies>
|
||||
@@ -49,6 +49,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.94</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>0.92</Version>
|
||||
|
||||
@@ -48,6 +48,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.1.24</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>1.1.24</Version>
|
||||
|
||||
@@ -25,6 +25,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.3</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>0.3</Version>
|
||||
|
||||
@@ -40,6 +40,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.0_661</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>0.0_661</Version>
|
||||
|
||||
@@ -34,6 +34,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.7</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>0.7</Version>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<Description>VCDImager is a full-featured mastering suite for authoring, disassembling and analyzing Video CD's and Super Video CD's. The core functionality consists of directly making Video CD BIN/CUE-style CD images from mpeg files.</Description>
|
||||
<Archive sha1sum="8c245555c3e21dcbc3d4dbb2ecca74f609545424" type="targz">http://ftp.gnu.org/gnu/vcdimager/vcdimager-0.7.24.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency versionFrom="0.90">libcdio-devel</Dependency>
|
||||
<Dependency>libcdio-devel</Dependency>
|
||||
<Dependency>popt</Dependency>
|
||||
</BuildDependencies>
|
||||
</Source>
|
||||
@@ -23,7 +23,7 @@
|
||||
<Package>
|
||||
<Name>vcdimager</Name>
|
||||
<RuntimeDependencies>
|
||||
<Dependency versionFrom="0.90">libcdio</Dependency>
|
||||
<Dependency>libcdio</Dependency>
|
||||
<Dependency>popt</Dependency>
|
||||
<Dependency>libxml2</Dependency>
|
||||
</RuntimeDependencies>
|
||||
@@ -50,6 +50,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.7.24</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>0.7.24</Version>
|
||||
|
||||
@@ -33,10 +33,10 @@ def setup():
|
||||
-DWITH_GAMEENGINE=ON \
|
||||
-DWITH_PYTHON_INSTALL=OFF \
|
||||
-DWITH_MOD_OCEANSIM=ON \
|
||||
-DPYTHON_VERSION=3.4 \
|
||||
-DPYTHON_VERSION=3.6 \
|
||||
-DPYTHON_LIBPATH=/usr/lib \
|
||||
-DPYTHON_LIBRARY=python3.4m \
|
||||
-DPYTHON_INCLUDE_DIRS=/usr/include/python3.4m \
|
||||
-DPYTHON_LIBRARY=python3.6m \
|
||||
-DPYTHON_INCLUDE_DIRS=/usr/include/python3.6m \
|
||||
-DWITH_CODEC_SNDFILE=ON ")
|
||||
|
||||
def build():
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<Dependency>openal-devel</Dependency>
|
||||
<Dependency>openexr-devel</Dependency>
|
||||
<Dependency>openjpeg-devel</Dependency>
|
||||
<Dependency>python3-devel</Dependency>
|
||||
<Dependency>python3-devel</Dependency>
|
||||
<Dependency>tiff-devel</Dependency>
|
||||
<Dependency>openimageio-devel</Dependency>
|
||||
<Dependency>webp-devel</Dependency>
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
Description: Fix for #807657 -- missing include "config.h"
|
||||
Author: Tobias Frost <tobi@frost.de>
|
||||
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=807657
|
||||
Last-Update: 2016-01-07
|
||||
---
|
||||
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
|
||||
--- a/src/compat.h
|
||||
+++ b/src/compat.h
|
||||
@@ -1,6 +1,8 @@
|
||||
// basic headers
|
||||
#define _GNU_SOURCE /* really just for strndup */
|
||||
|
||||
+#include "config.h"
|
||||
+
|
||||
#ifdef HAVE_STDBOOL_H
|
||||
# include <stdbool.h>
|
||||
#else
|
||||
@@ -17,6 +19,7 @@
|
||||
# define __bool_true_false_are_defined 1
|
||||
#endif
|
||||
|
||||
+
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef HAVE_STDLIB_H
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>app:console</IsA>
|
||||
<Summary>A simple DVD tool</Summary>
|
||||
<Description>dvdauthor is a set of simple tools to help you author a DVD.</Description>
|
||||
<Archive sha1sum="0e605642140576bfb3e963414d77630d1c073a51" type="targz">https://sourceforge.net/projects/dvdauthor/files/dvdauthor-0.7.2.tar.gz</Archive>
|
||||
<Archive sha1sum="a9636d165bf546e3e2b25b7397c33dbfa2895e6a" type="targz">https://sourceforge.net/projects/dvdauthor/files/dvdauthor/0.7.1/dvdauthor-0.7.1.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>fribidi-devel</Dependency>
|
||||
<Dependency>libdvdread-devel</Dependency>
|
||||
@@ -24,7 +24,7 @@
|
||||
<Dependency>libxml2-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!--<Patch>config.patch</Patch>-->
|
||||
<Patch level="1">dvdauthor-fix-build.patch</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -51,8 +51,8 @@
|
||||
<History>
|
||||
<Update release="2">
|
||||
<Date>2017-02-03</Date>
|
||||
<Version>0.7.2</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Version>0.7.1</Version>
|
||||
<Comment>Rebuild for new Toolchains.</Comment>
|
||||
<Name>Stefan Gronewold(groni)</Name>
|
||||
<Email>groni@pisilinux.org</Email>
|
||||
</Update>
|
||||
|
||||
@@ -51,6 +51,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.4_rc5</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>1.4_rc5</Version>
|
||||
|
||||
@@ -18,4 +18,4 @@ def build():
|
||||
def install():
|
||||
autotools.install()
|
||||
|
||||
pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README", "TODO")
|
||||
pisitools.dodoc("AUTHORS", "COPYING", "NEWS", "README", "TODO")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>A dynamic, any to any, pixel format translation library</Summary>
|
||||
<Description>babl is a library that allows converting between different methods of storing pixels known as pixel formats that have with different bitdepths and other data representations, color models and component permutations.</Description>
|
||||
<Archive sha1sum="b9a811d9d05717d66bc107a18447fbd74cff7eea" type="tarbz2">http://download.gimp.org/pub/babl/0.1/babl-0.1.12.tar.bz2</Archive>
|
||||
<Archive sha1sum="87d4eb409cfa50bd622f85c2858ddaa8167b4f5e" type="tarbz2">https://download.gimp.org/pub/babl/0.1/babl-0.1.24.tar.bz2</Archive>
|
||||
<BuildDependencies>
|
||||
<!-- For rsvg utility -->
|
||||
<!--<Dependency>librsvg</Dependency>-->
|
||||
@@ -43,6 +43,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.1.24</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>0.1.12</Version>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>Library to handle, display and manipulate GIF images</Summary>
|
||||
<Description>The giflib package contains a shared library of functions for loading and saving GIF format image files. It is API and ABI compatible with libungif, the library which supported uncompressed GIFs while the Unisys LZW patent was in effect.</Description>
|
||||
<Archive sha1sum="5c30ae506b6d1b24e331ab072e7ab4638c5ce709" type="tarbz2">mirrors://sourceforge/giflib/giflib-5.0.6.tar.bz2</Archive>
|
||||
<Archive sha1sum="5f1157cfc377916280849e247b8e34fa0446513f" type="tarbz2">mirrors://sourceforge/giflib/giflib-5.1.4.tar.bz2</Archive>
|
||||
<BuildDependencies>
|
||||
<!--<Dependency>libXt-devel</Dependency>
|
||||
<Dependency>libSM-devel</Dependency>
|
||||
@@ -60,6 +60,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>5.1.4</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>5.0.6</Version>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>app:gui</IsA>
|
||||
<Summary>Utility for extracting and converting Microsoft icon and cursor files</Summary>
|
||||
<Description>A set of programs for extracting and converting images in icon and cursor files (.ico, .cur)</Description>
|
||||
<Archive sha1sum="2712acd33c611588793562310077efd2ff35dca5" type="tarbz2">http://savannah.nongnu.org/download/icoutils/icoutils-0.31.0.tar.bz2</Archive>
|
||||
<Archive sha1sum="751aa911164aea06e3b88cb1625aad8e0a96f5d0" type="tarbz2">http://download.savannah.gnu.org/releases/icoutils/icoutils-0.31.1.tar.bz2</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>libpng-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
@@ -33,6 +33,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="2">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.31.1</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2016-06-02</Date>
|
||||
<Version>0.31.0</Version>
|
||||
|
||||
@@ -12,18 +12,18 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>Second version of the general image loading and rendering library</Summary>
|
||||
<Description>Imlib 2 is the successor to Imlib. It is not just a newer version - it is a completely new library. Imlib2 can be installed alongside Imlib 1.x without any problems since they are effectively different libraries - but they Have very similar functionality.</Description>
|
||||
<Archive sha1sum="238943914df6caacda910ec9cfc81f4269a025aa" type="targz">http://sourceforge.net/projects/enlightenment/files/imlib2-src/1.4.6/imlib2-1.4.6.tar.gz</Archive>
|
||||
<Archive sha1sum="77ba47763a32579b9c72f603ccdbd9bde18a8009" type="targz">http://sourceforge.net/projects/enlightenment/files/imlib2-src/1.4.9/imlib2-1.4.9.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>giflib-devel</Dependency>
|
||||
<Dependency>libid3tag-devel</Dependency>
|
||||
<Dependency>libXext-devel</Dependency>
|
||||
<Dependency>libjpeg-turbo-devel</Dependency>
|
||||
<Dependency>tiff-devel</Dependency>
|
||||
<Dependency>freetype-devel</Dependency>
|
||||
<Dependency>freetype-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">imlib2-1.4.5-no-my-libs.patch</Patch>
|
||||
<Patch level="0">imlib2-giflib5.patch</Patch>
|
||||
<!-- <Patch level="1">imlib2-1.4.5-no-my-libs.patch</Patch> -->
|
||||
<!-- <Patch level="0">imlib2-giflib5.patch</Patch> -->
|
||||
<!--Patch level="0">imlib2-1.3.0-multilib.patch</Patch-->
|
||||
</Patches>
|
||||
</Source>
|
||||
@@ -63,6 +63,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.4.9</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>1.4.6</Version>
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>Software implementation of JPEG-2000 Part 1</Summary>
|
||||
<Description>JasPer is a software-based implementation of the codec specified in the JPEG-2000 Part-1 standard (ISO/IEC 15444-1:2000).</Description>
|
||||
<Archive sha1sum="9c5735f773922e580bf98c7c7dfda9bbed4c5191" type="zip">http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-1.900.1.zip</Archive>
|
||||
<Archive sha1sum="42518b05fd73242f8ee8047d2e35e0275a697a5f" type="targz">http://www.ece.uvic.ca/~frodo/jasper/software/jasper-2.0.10.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>libjpeg-turbo-devel</Dependency>
|
||||
<!--<Dependency>mesa-devel</Dependency>-->
|
||||
<!--<Dependency>mesa-glu-devel</Dependency>-->
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1" compressionType="bz2">jasper-1.900.1-fixes-20081208.patch.bz2</Patch>
|
||||
<!-- <Patch level="1" compressionType="bz2">jasper-1.900.1-fixes-20081208.patch.bz2</Patch> -->
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -81,6 +81,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-06</Date>
|
||||
<Version>2.0.10</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>1.900.1</Version>
|
||||
|
||||
@@ -73,6 +73,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.19</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>1.19</Version>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>A color management library.</Summary>
|
||||
<Description>Little cms is a color management library. Implements fast transforms between ICC profiles. It is focused on speed, and is portable across several platforms.</Description>
|
||||
<Archive sha1sum="b0ecee5cb8391338e6c281d1c11dcae2bc22a5d2" type="targz">http://sourceforge.net/projects/lcms/files/lcms/2.6/lcms2-2.6.tar.gz</Archive>
|
||||
<Archive sha1sum="e9535ec4a572b8fc7a1c405c35e6f4dc97714197" type="targz">http://sourceforge.net/projects/lcms/files/lcms/2.8/lcms2-2.8.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>libjpeg-turbo-devel</Dependency>
|
||||
<Dependency>tiff-devel</Dependency>
|
||||
@@ -65,6 +65,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>2.8</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>2.6</Version>
|
||||
|
||||
@@ -53,7 +53,14 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Update release="2">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.3.2</Version>
|
||||
<Comment>Rebuild.</Comment>
|
||||
<Name>Stefan Gronewold(groni)</Name>
|
||||
<Email>groni@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="1">
|
||||
<Date>2016-11-13</Date>
|
||||
<Version>0.3.2</Version>
|
||||
<Comment>First Release.</Comment>
|
||||
|
||||
@@ -42,6 +42,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>2.3.21</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>2.3.21</Version>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>Multiple Image Networkgraphics lib (animated png's)</Summary>
|
||||
<Description>Libmng -The reference library for reading, displaying, writing and examining Multiple-Image Network Graphics. MNG is the animation extension to the popular PNG image-format.</Description>
|
||||
<Archive sha1sum="ed63ebddb3d556a730024e2d6a6e00b8c0f5bc41" type="targz">http://sourceforge.net/projects/libmng/files/libmng-devel/2.0.2/libmng-2.0.2.tar.gz</Archive>
|
||||
<Archive sha1sum="0f141482ffcef6f8cd4413f945a59310ac2e49af" type="tarxz">http://sourceforge.net/projects/libmng/files/libmng-devel/2.0.3/libmng-2.0.3.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>zlib-devel</Dependency>
|
||||
<Dependency>lcms2-devel</Dependency>
|
||||
@@ -66,6 +66,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>2.0.3</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>2.0.2</Version>
|
||||
|
||||
@@ -66,6 +66,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>10.61.02</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>10.61.02</Version>
|
||||
|
||||
@@ -72,6 +72,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.5.2</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>1.5.2</Version>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>A networked sound server with an advanced plugin system</Summary>
|
||||
<Description>pulseaudio is a sound server for POSIX and Win32 systems. It allows you to do advanced operations on your sound data as it passes between your application and your hardware.</Description>
|
||||
<Archive sha1sum="d9a9d7cb667ed95ee1de4b6544d5c7444c5a0064" type="tarxz">https://freedesktop.org/software/pulseaudio/releases/pulseaudio-9.0.tar.xz</Archive>
|
||||
<Archive sha1sum="ab7cc41a2dc2b9da0794e3a51a4eb7e82e7da511" type="tarxz">https://freedesktop.org/software/pulseaudio/releases/pulseaudio-10.0.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>orc-devel</Dependency>
|
||||
<Dependency>sbc-devel</Dependency>
|
||||
@@ -220,6 +220,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="8">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>10.0</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Stefan Gronewold(groni)</Name>
|
||||
<Email>groni@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="7">
|
||||
<Date>2016-09-13</Date>
|
||||
<Version>9.0</Version>
|
||||
|
||||
@@ -9,7 +9,7 @@ from pisi.actionsapi import autotools
|
||||
from pisi.actionsapi import pisitools
|
||||
|
||||
def setup():
|
||||
autotools.rawConfigure("--prefix=/usr \
|
||||
autotools.configure("--prefix=/usr \
|
||||
--mandir=/usr/share/man \
|
||||
--disable-debug \
|
||||
--disable-static \
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<IsA>app:console</IsA>
|
||||
<Summary>A command-line tool to record, convert and stream audio and video</Summary>
|
||||
<Description>FFmpeg is a complete solution to record, convert and stream audio and video.</Description>
|
||||
<Archive sha1sum="ac3341269fe89a41892e8696465b859e1f425213" type="tarxz">http://ffmpeg.org/releases/ffmpeg-3.0.2.tar.xz</Archive>
|
||||
<Archive sha1sum="1178507b46ae88aa3dccb911e71af4b70c6f4f8e" type="tarxz">http://ffmpeg.org/releases/ffmpeg-3.2.2.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>freetype-devel</Dependency>
|
||||
<Dependency>faac-devel</Dependency>
|
||||
@@ -45,6 +45,7 @@
|
||||
<Dependency>speex-devel</Dependency>
|
||||
<Dependency>yasm-devel</Dependency>
|
||||
<Dependency>libv4l-devel</Dependency>
|
||||
<Dependency>pkgconfig</Dependency>
|
||||
<Dependency>libvo-amrwbenc-devel</Dependency>
|
||||
<Dependency>libvo-aacenc-devel</Dependency>
|
||||
<Dependency>xvid-devel</Dependency>
|
||||
@@ -125,6 +126,13 @@
|
||||
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>3.2.2</Version>
|
||||
<Comment>Release bump.</Comment>
|
||||
<Name>Stefan Gronewold(groni)</Name>
|
||||
<Email>groni@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2016-06-13</Date>
|
||||
<Version>3.0.2</Version>
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>WebM VP8 Codec SDK</Summary>
|
||||
<Description>libvpx is the VP8 development library usually used in WebM and similiar formats.</Description>
|
||||
<Archive sha1sum="82426a59ad34d72c762f9e4079e8e5197afc842d" type="targz">https://github.com/webmproject/libvpx/archive/v1.5.0.tar.gz</Archive>
|
||||
<Archive sha1sum="9e41a6bb2b991f5542c264676ac452114cda9c7c" type="targz">https://github.com/webmproject/libvpx/archive/v1.6.1.tar.gz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>libgcc</Dependency>
|
||||
<Dependency>yasm-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<Patch level="1">0001-Fix-for-issue-1114-compile-error.patch</Patch>
|
||||
<!-- <Patch level="1">0001-Fix-for-issue-1114-compile-error.patch</Patch> -->
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -48,6 +48,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.6.1</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2016-06-12</Date>
|
||||
<Version>1.5.0</Version>
|
||||
|
||||
@@ -20,4 +20,4 @@ def build():
|
||||
def install():
|
||||
autotools.rawInstall('DESTDIR="%s"' % get.installDIR())
|
||||
|
||||
pisitools.dodoc("AUTHORS", "ChangeLog", "README")
|
||||
pisitools.dodoc("LICENSE", "ChangeLog", "README")
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>AMR speech codec implementation</Summary>
|
||||
<Description>Opencore AMR is an implementation of Adaptive Multi Rate Narrowband and Wideband speech codec.</Description>
|
||||
<Archive sha1sum="905cce84963a241dc058fb42357259952ce2e4ab" type="targz">https://sourceforge.net/projects/opencore-amr/files/opencore-amr/opencore-amr-0.1.4.tar.gz</Archive>
|
||||
<Archive sha1sum="905cce84963a241dc058fb42357259952ce2e4ab" type="targz">mirrors://sourceforge/opencore-amr/opencore-amr/opencore-amr-0.1.4.tar.gz</Archive>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-03</Date>
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.1.4</Version>
|
||||
<Comment>Version bump.</Comment>
|
||||
<Name>Stefan Gronewold(groni)</Name>
|
||||
@@ -58,4 +58,4 @@
|
||||
<Email>kaptan@pisilinux.org</Email>
|
||||
</Update>
|
||||
</History>
|
||||
</PISI>
|
||||
</PISI>
|
||||
@@ -36,6 +36,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>8.6.9</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>8.6.9</Version>
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
From fee19fa8d4f6f351e5a76f5801884880249d6a45 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Wed, 5 Oct 2016 09:55:55 +0100
|
||||
Subject: [PATCH] Bug 697178: Add a file permissions callback
|
||||
|
||||
For the rare occasions when the graphics library directly opens a file
|
||||
(currently for reading), this allows us to apply any restrictions on
|
||||
file access normally applied in the interpteter.
|
||||
---
|
||||
base/gsicc_manage.c | 10 ++++++----
|
||||
base/gslibctx.c | 12 +++++++++++-
|
||||
base/gslibctx.h | 7 +++++++
|
||||
psi/imain.c | 2 ++
|
||||
psi/int.mak | 2 +-
|
||||
psi/zfile.c | 19 +++++++++++++++++++
|
||||
psi/zfile.h | 7 +++++++
|
||||
7 files changed, 53 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/base/gsicc_manage.c b/base/gsicc_manage.c
|
||||
index 931c2a6..e9c09c3 100644
|
||||
--- a/base/gsicc_manage.c
|
||||
+++ b/base/gsicc_manage.c
|
||||
@@ -1124,10 +1124,12 @@ gsicc_open_search(const char* pname, int namelen, gs_memory_t *mem_gc,
|
||||
}
|
||||
|
||||
/* First just try it like it is */
|
||||
- str = sfopen(pname, "r", mem_gc);
|
||||
- if (str != NULL) {
|
||||
- *strp = str;
|
||||
- return 0;
|
||||
+ if (gs_check_file_permission(mem_gc, pname, namelen, "r") >= 0) {
|
||||
+ str = sfopen(pname, "r", mem_gc);
|
||||
+ if (str != NULL) {
|
||||
+ *strp = str;
|
||||
+ return 0;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* If that fails, try %rom% */ /* FIXME: Not sure this is needed or correct */
|
||||
diff --git a/base/gslibctx.c b/base/gslibctx.c
|
||||
index fa4432a..f2c13e3 100644
|
||||
--- a/base/gslibctx.c
|
||||
+++ b/base/gslibctx.c
|
||||
@@ -183,7 +183,7 @@ int gs_lib_ctx_init( gs_memory_t *mem )
|
||||
mem->gs_lib_ctx = NULL;
|
||||
return -1;
|
||||
}
|
||||
-
|
||||
+ pio->client_check_file_permission = NULL;
|
||||
gp_get_realtime(pio->real_time_0);
|
||||
|
||||
/* Set scanconverter to 1 (default) */
|
||||
@@ -336,3 +336,13 @@ void errflush(const gs_memory_t *mem)
|
||||
fflush(mem->gs_lib_ctx->fstderr);
|
||||
/* else nothing to flush */
|
||||
}
|
||||
+
|
||||
+int
|
||||
+gs_check_file_permission (gs_memory_t *mem, const char *fname, const int len, const char *permission)
|
||||
+{
|
||||
+ int code = 0;
|
||||
+ if (mem->gs_lib_ctx->client_check_file_permission != NULL) {
|
||||
+ code = mem->gs_lib_ctx->client_check_file_permission(mem, fname, len, permission);
|
||||
+ }
|
||||
+ return code;
|
||||
+}
|
||||
diff --git a/base/gslibctx.h b/base/gslibctx.h
|
||||
index 84ec205..55eb4a6 100644
|
||||
--- a/base/gslibctx.h
|
||||
+++ b/base/gslibctx.h
|
||||
@@ -32,6 +32,9 @@ typedef struct gs_fapi_server_s gs_fapi_server;
|
||||
# define gs_font_dir_DEFINED
|
||||
typedef struct gs_font_dir_s gs_font_dir;
|
||||
#endif
|
||||
+
|
||||
+typedef int (*client_check_file_permission_t) (gs_memory_t *mem, const char *fname, const int len, const char *permission);
|
||||
+
|
||||
typedef struct gs_lib_ctx_s
|
||||
{
|
||||
gs_memory_t *memory; /* mem->gs_lib_ctx->memory == mem */
|
||||
@@ -61,6 +64,7 @@ typedef struct gs_lib_ctx_s
|
||||
struct gx_io_device_s **io_device_table;
|
||||
int io_device_table_count;
|
||||
int io_device_table_size;
|
||||
+ client_check_file_permission_t client_check_file_permission;
|
||||
/* Define the default value of AccurateScreens that affects setscreen
|
||||
and setcolorscreen. */
|
||||
bool screen_accurate_screens;
|
||||
@@ -132,6 +136,9 @@ int
|
||||
gs_lib_ctx_get_default_device_list(const gs_memory_t *mem, char** dev_list_str,
|
||||
int *list_str_len);
|
||||
|
||||
+int
|
||||
+gs_check_file_permission (gs_memory_t *mem, const char *fname, const int len, const char *permission);
|
||||
+
|
||||
#define IS_LIBCTX_STDOUT(mem, f) (f == mem->gs_lib_ctx->fstdout)
|
||||
#define IS_LIBCTX_STDERR(mem, f) (f == mem->gs_lib_ctx->fstderr)
|
||||
|
||||
diff --git a/psi/imain.c b/psi/imain.c
|
||||
index 9a9bb5d..6874128 100644
|
||||
--- a/psi/imain.c
|
||||
+++ b/psi/imain.c
|
||||
@@ -57,6 +57,7 @@
|
||||
#include "ivmspace.h"
|
||||
#include "idisp.h" /* for setting display device callback */
|
||||
#include "iplugin.h"
|
||||
+#include "zfile.h"
|
||||
|
||||
#ifdef PACIFY_VALGRIND
|
||||
#include "valgrind.h"
|
||||
@@ -212,6 +213,7 @@ gs_main_init1(gs_main_instance * minst)
|
||||
"the_gs_name_table");
|
||||
if (code < 0)
|
||||
return code;
|
||||
+ mem->gs_lib_ctx->client_check_file_permission = z_check_file_permissions;
|
||||
}
|
||||
code = obj_init(&minst->i_ctx_p, &idmem); /* requires name_init */
|
||||
if (code < 0)
|
||||
diff --git a/psi/int.mak b/psi/int.mak
|
||||
index 4654afc..bb30d51 100644
|
||||
--- a/psi/int.mak
|
||||
+++ b/psi/int.mak
|
||||
@@ -2024,7 +2024,7 @@ $(PSOBJ)imain.$(OBJ) : $(PSSRC)imain.c $(GH) $(memory__h) $(string__h)\
|
||||
$(ialloc_h) $(iconf_h) $(idebug_h) $(idict_h) $(idisp_h) $(iinit_h)\
|
||||
$(iname_h) $(interp_h) $(iplugin_h) $(isave_h) $(iscan_h) $(ivmspace_h)\
|
||||
$(iinit_h) $(main_h) $(oper_h) $(ostack_h)\
|
||||
- $(sfilter_h) $(store_h) $(stream_h) $(strimpl_h)\
|
||||
+ $(sfilter_h) $(store_h) $(stream_h) $(strimpl_h) $(zfile_h)\
|
||||
$(INT_MAK) $(MAKEDIRS)
|
||||
$(PSCC) $(PSO_)imain.$(OBJ) $(C_) $(PSSRC)imain.c
|
||||
|
||||
diff --git a/psi/zfile.c b/psi/zfile.c
|
||||
index b6caea2..fd94f67 100644
|
||||
--- a/psi/zfile.c
|
||||
+++ b/psi/zfile.c
|
||||
@@ -197,6 +197,25 @@ check_file_permissions(i_ctx_t *i_ctx_p, const char *fname, int len,
|
||||
return check_file_permissions_reduced(i_ctx_p, fname_reduced, rlen, permitgroup);
|
||||
}
|
||||
|
||||
+/* z_check_file_permissions: see zfile.h for explanation
|
||||
+ */
|
||||
+int
|
||||
+z_check_file_permissions(gs_memory_t *mem, const char *fname, const int len, const char *permission)
|
||||
+{
|
||||
+ i_ctx_t *i_ctx_p = get_minst_from_memory(mem)->i_ctx_p;
|
||||
+ gs_parsed_file_name_t pname;
|
||||
+ const char *permitgroup = permission[0] == 'r' ? "PermitFileReading" : "PermitFileWriting";
|
||||
+ int code = gs_parse_file_name(&pname, fname, len, imemory);
|
||||
+ if (code < 0)
|
||||
+ return code;
|
||||
+
|
||||
+ if (pname.iodev && i_ctx_p->LockFilePermissions && strcmp(pname.iodev->dname, "%pipe%") == 0)
|
||||
+ return gs_error_invalidfileaccess;
|
||||
+
|
||||
+ code = check_file_permissions(i_ctx_p, fname, len, permitgroup);
|
||||
+ return code;
|
||||
+}
|
||||
+
|
||||
/* <name_string> <access_string> file <file> */
|
||||
int /* exported for zsysvm.c */
|
||||
zfile(i_ctx_t *i_ctx_p)
|
||||
diff --git a/psi/zfile.h b/psi/zfile.h
|
||||
index fdf1373..a9399c7 100644
|
||||
--- a/psi/zfile.h
|
||||
+++ b/psi/zfile.h
|
||||
@@ -22,4 +22,11 @@
|
||||
int zopen_file(i_ctx_t *i_ctx_p, const gs_parsed_file_name_t *pfn,
|
||||
const char *file_access, stream **ps, gs_memory_t *mem);
|
||||
|
||||
+/* z_check_file_permissions: a callback (via mem->gs_lib_ctx->client_check_file_permission)
|
||||
+ * to allow applying the above permissions checks when opening file(s) from
|
||||
+ * the graphics library
|
||||
+ */
|
||||
+int
|
||||
+z_check_file_permissions(gs_memory_t *mem, const char *fname,
|
||||
+ const int len, const char *permission);
|
||||
#endif
|
||||
--
|
||||
2.7.4
|
||||
@@ -0,0 +1,28 @@
|
||||
From 8abd22010eb4db0fb1b10e430d5f5d83e015ef70 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Mon, 3 Oct 2016 01:46:28 +0100
|
||||
Subject: [PATCH] Bug 697169: Be rigorous with SAFER permissions
|
||||
|
||||
Once we've opened our input file from the command line, enforce the SAFER
|
||||
rules.
|
||||
---
|
||||
psi/zfile.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/psi/zfile.c b/psi/zfile.c
|
||||
index b6caea2..2c6c958 100644
|
||||
--- a/psi/zfile.c
|
||||
+++ b/psi/zfile.c
|
||||
@@ -1081,6 +1081,9 @@ lib_file_open(gs_file_path_ptr lib_path, const gs_memory_t *mem, i_ctx_t *i_ctx
|
||||
gs_main_instance *minst = get_minst_from_memory(mem);
|
||||
int code;
|
||||
|
||||
+ if (i_ctx_p && starting_arg_file)
|
||||
+ i_ctx_p->starting_arg_file = false;
|
||||
+
|
||||
/* when starting arg files (@ files) iodev_default is not yet set */
|
||||
if (iodev == 0)
|
||||
iodev = (gx_io_device *)gx_io_device_table[0];
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From 6f749c0c44e7b9e09737b9f29edf29925a34f0cf Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Wed, 5 Oct 2016 09:59:25 +0100
|
||||
Subject: [PATCH] Bug 697179: Reference count device icc profile
|
||||
|
||||
when copying a device
|
||||
---
|
||||
base/gsdevice.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/base/gsdevice.c b/base/gsdevice.c
|
||||
index 778106f..aea986a 100644
|
||||
--- a/base/gsdevice.c
|
||||
+++ b/base/gsdevice.c
|
||||
@@ -614,6 +614,7 @@ gx_device_init(gx_device * dev, const gx_device * proto, gs_memory_t * mem,
|
||||
dev->memory = mem;
|
||||
dev->retained = !internal;
|
||||
rc_init(dev, mem, (internal ? 0 : 1));
|
||||
+ rc_increment(dev->icc_struct);
|
||||
}
|
||||
|
||||
void
|
||||
--
|
||||
2.7.4
|
||||
@@ -0,0 +1,42 @@
|
||||
From 875a0095f37626a721c7ff57d606a0f95af03913 Mon Sep 17 00:00:00 2001
|
||||
From: Ken Sharp <ken.sharp@artifex.com>
|
||||
Date: Wed, 5 Oct 2016 10:10:58 +0100
|
||||
Subject: [PATCH] DSC parser - validate parameters
|
||||
|
||||
Bug #697190 ".initialize_dsc_parser doesn't validate the parameter is a dict type before using it."
|
||||
|
||||
Regardless of any security implications, its simply wrong for a PostScript
|
||||
operator not to validate its parameter(s).
|
||||
|
||||
No differences expected.
|
||||
---
|
||||
psi/zdscpars.c | 13 +++++++++----
|
||||
1 file changed, 9 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/psi/zdscpars.c b/psi/zdscpars.c
|
||||
index c05e154..9b4b605 100644
|
||||
--- a/psi/zdscpars.c
|
||||
+++ b/psi/zdscpars.c
|
||||
@@ -150,11 +150,16 @@ zinitialize_dsc_parser(i_ctx_t *i_ctx_p)
|
||||
ref local_ref;
|
||||
int code;
|
||||
os_ptr const op = osp;
|
||||
- dict * const pdict = op->value.pdict;
|
||||
- gs_memory_t * const mem = (gs_memory_t *)dict_memory(pdict);
|
||||
- dsc_data_t * const data =
|
||||
- gs_alloc_struct(mem, dsc_data_t, &st_dsc_data_t, "DSC parser init");
|
||||
+ dict *pdict;
|
||||
+ gs_memory_t *mem;
|
||||
+ dsc_data_t *data;
|
||||
|
||||
+ check_read_type(*op, t_dictionary);
|
||||
+
|
||||
+ pdict = op->value.pdict;
|
||||
+ mem = (gs_memory_t *)dict_memory(pdict);
|
||||
+
|
||||
+ data = gs_alloc_struct(mem, dsc_data_t, &st_dsc_data_t, "DSC parser init");
|
||||
if (!data)
|
||||
return_error(gs_error_VMerror);
|
||||
data->document_level = 0;
|
||||
--
|
||||
2.7.4
|
||||
@@ -0,0 +1,41 @@
|
||||
From f5c7555c30393e64ec1f5ab0dfae5b55b3b3fc78 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Sat, 8 Oct 2016 16:10:27 +0100
|
||||
Subject: [PATCH] Bug 697203: check for sufficient params in .sethalftone5
|
||||
|
||||
and param types
|
||||
---
|
||||
psi/zht2.c | 12 ++++++++++--
|
||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/psi/zht2.c b/psi/zht2.c
|
||||
index fb4a264..dfa27a4 100644
|
||||
--- a/psi/zht2.c
|
||||
+++ b/psi/zht2.c
|
||||
@@ -82,14 +82,22 @@ zsethalftone5(i_ctx_t *i_ctx_p)
|
||||
gs_memory_t *mem;
|
||||
uint edepth = ref_stack_count(&e_stack);
|
||||
int npop = 2;
|
||||
- int dict_enum = dict_first(op);
|
||||
+ int dict_enum;
|
||||
ref rvalue[2];
|
||||
int cname, colorant_number;
|
||||
byte * pname;
|
||||
uint name_size;
|
||||
int halftonetype, type = 0;
|
||||
gs_gstate *pgs = igs;
|
||||
- int space_index = r_space_index(op - 1);
|
||||
+ int space_index;
|
||||
+
|
||||
+ if (ref_stack_count(&o_stack) < 2)
|
||||
+ return_error(gs_error_stackunderflow);
|
||||
+ check_type(*op, t_dictionary);
|
||||
+ check_type(*(op - 1), t_dictionary);
|
||||
+
|
||||
+ dict_enum = dict_first(op);
|
||||
+ space_index = r_space_index(op - 1);
|
||||
|
||||
mem = (gs_memory_t *) idmemory->spaces_indexed[space_index];
|
||||
|
||||
--
|
||||
2.7.4
|
||||
@@ -0,0 +1,896 @@
|
||||
From cecf6b592945d247bf932f6a4f50065db4acfba8 Mon Sep 17 00:00:00 2001
|
||||
From: Robin Watts <robin.watts@artifex.com>
|
||||
Date: Mon, 12 Dec 2016 17:47:17 +0000
|
||||
Subject: [PATCH] Squash signed/unsigned warnings in MSVC jbig2 build.
|
||||
|
||||
Also rename "new" to "new_dict", because "new" is a bad
|
||||
variable name.
|
||||
---
|
||||
jbig2dec/jbig2.c | 4 +--
|
||||
jbig2dec/jbig2.h | 8 +++--
|
||||
jbig2dec/jbig2_generic.c | 2 +-
|
||||
jbig2dec/jbig2_halftone.c | 24 +++++++--------
|
||||
jbig2dec/jbig2_huffman.c | 10 +++---
|
||||
jbig2dec/jbig2_huffman.h | 2 +-
|
||||
jbig2dec/jbig2_image.c | 32 +++++++++----------
|
||||
jbig2dec/jbig2_mmr.c | 66 ++++++++++++++++++++-------------------
|
||||
jbig2dec/jbig2_page.c | 6 ++--
|
||||
jbig2dec/jbig2_priv.h | 4 +--
|
||||
jbig2dec/jbig2_segment.c | 10 +++---
|
||||
jbig2dec/jbig2_symbol_dict.c | 73 ++++++++++++++++++++++----------------------
|
||||
jbig2dec/jbig2_symbol_dict.h | 6 ++--
|
||||
jbig2dec/jbig2_text.c | 16 +++++-----
|
||||
jbig2dec/jbig2_text.h | 2 +-
|
||||
15 files changed, 134 insertions(+), 131 deletions(-)
|
||||
|
||||
diff --git a/jbig2dec/jbig2.c b/jbig2dec/jbig2.c
|
||||
index f729e29..e51380f 100644
|
||||
--- a/jbig2dec/jbig2.c
|
||||
+++ b/jbig2dec/jbig2.c
|
||||
@@ -379,7 +379,7 @@ typedef struct {
|
||||
} Jbig2WordStreamBuf;
|
||||
|
||||
static int
|
||||
-jbig2_word_stream_buf_get_next_word(Jbig2WordStream *self, int offset, uint32_t *word)
|
||||
+jbig2_word_stream_buf_get_next_word(Jbig2WordStream *self, size_t offset, uint32_t *word)
|
||||
{
|
||||
Jbig2WordStreamBuf *z = (Jbig2WordStreamBuf *) self;
|
||||
const byte *data = z->data;
|
||||
@@ -390,7 +390,7 @@ jbig2_word_stream_buf_get_next_word(Jbig2WordStream *self, int offset, uint32_t
|
||||
else if (offset > z->size)
|
||||
return -1;
|
||||
else {
|
||||
- int i;
|
||||
+ size_t i;
|
||||
|
||||
result = 0;
|
||||
for (i = 0; i < z->size - offset; i++)
|
||||
diff --git a/jbig2dec/jbig2.h b/jbig2dec/jbig2.h
|
||||
index d5aa52f..624e0ed 100644
|
||||
--- a/jbig2dec/jbig2.h
|
||||
+++ b/jbig2dec/jbig2.h
|
||||
@@ -56,17 +56,19 @@ typedef struct _Jbig2SymbolDictionary Jbig2SymbolDictionary;
|
||||
*/
|
||||
|
||||
struct _Jbig2Image {
|
||||
- int width, height, stride;
|
||||
+ uint32_t width;
|
||||
+ uint32_t height;
|
||||
+ uint32_t stride;
|
||||
uint8_t *data;
|
||||
int refcount;
|
||||
};
|
||||
|
||||
-Jbig2Image *jbig2_image_new(Jbig2Ctx *ctx, int width, int height);
|
||||
+Jbig2Image *jbig2_image_new(Jbig2Ctx *ctx, uint32_t width, uint32_t height);
|
||||
Jbig2Image *jbig2_image_clone(Jbig2Ctx *ctx, Jbig2Image *image);
|
||||
void jbig2_image_release(Jbig2Ctx *ctx, Jbig2Image *image);
|
||||
void jbig2_image_free(Jbig2Ctx *ctx, Jbig2Image *image);
|
||||
void jbig2_image_clear(Jbig2Ctx *ctx, Jbig2Image *image, int value);
|
||||
-Jbig2Image *jbig2_image_resize(Jbig2Ctx *ctx, Jbig2Image *image, int width, int height);
|
||||
+Jbig2Image *jbig2_image_resize(Jbig2Ctx *ctx, Jbig2Image *image, uint32_t width, uint32_t height);
|
||||
|
||||
/* errors are returned from the library via a callback. If no callback
|
||||
is provided (a NULL argument is passed ot jbig2_ctx_new) a default
|
||||
diff --git a/jbig2dec/jbig2_generic.c b/jbig2dec/jbig2_generic.c
|
||||
index 02fdbfb..9656198 100644
|
||||
--- a/jbig2dec/jbig2_generic.c
|
||||
+++ b/jbig2dec/jbig2_generic.c
|
||||
@@ -718,7 +718,7 @@ jbig2_immediate_generic_region(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte
|
||||
byte seg_flags;
|
||||
int8_t gbat[8];
|
||||
int offset;
|
||||
- int gbat_bytes = 0;
|
||||
+ uint32_t gbat_bytes = 0;
|
||||
Jbig2GenericRegionParams params;
|
||||
int code = 0;
|
||||
Jbig2Image *image = NULL;
|
||||
diff --git a/jbig2dec/jbig2_halftone.c b/jbig2dec/jbig2_halftone.c
|
||||
index aeab576..acfbc56 100644
|
||||
--- a/jbig2dec/jbig2_halftone.c
|
||||
+++ b/jbig2dec/jbig2_halftone.c
|
||||
@@ -257,8 +257,8 @@ jbig2_decode_gray_scale_image(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
{
|
||||
uint8_t **GSVALS = NULL;
|
||||
size_t consumed_bytes = 0;
|
||||
- int i, j, code, stride;
|
||||
- int x, y;
|
||||
+ uint32_t i, j, stride, x, y;
|
||||
+ int code;
|
||||
Jbig2Image **GSPLANES;
|
||||
Jbig2GenericRegionParams rparams;
|
||||
Jbig2WordStream *ws = NULL;
|
||||
@@ -276,9 +276,8 @@ jbig2_decode_gray_scale_image(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
if (GSPLANES[i] == NULL) {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "failed to allocate %dx%d image for GSPLANES", GSW, GSH);
|
||||
/* free already allocated */
|
||||
- for (j = i - 1; j >= 0; --j) {
|
||||
- jbig2_image_release(ctx, GSPLANES[j]);
|
||||
- }
|
||||
+ for (j = i; j > 0;)
|
||||
+ jbig2_image_release(ctx, GSPLANES[--j]);
|
||||
jbig2_free(ctx->allocator, GSPLANES);
|
||||
return NULL;
|
||||
}
|
||||
@@ -323,9 +322,10 @@ jbig2_decode_gray_scale_image(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
}
|
||||
|
||||
/* C.5 step 2. Set j = GSBPP-2 */
|
||||
- j = GSBPP - 2;
|
||||
+ j = GSBPP - 1;
|
||||
/* C.5 step 3. decode loop */
|
||||
- while (j >= 0) {
|
||||
+ while (j > 0) {
|
||||
+ j--;
|
||||
/* C.5 step 3. (a) */
|
||||
if (GSMMR) {
|
||||
code = jbig2_decode_halftone_mmr(ctx, &rparams, data + consumed_bytes, size - consumed_bytes, GSPLANES[j], &consumed_bytes);
|
||||
@@ -345,7 +345,6 @@ jbig2_decode_gray_scale_image(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
GSPLANES[j]->data[i] ^= GSPLANES[j + 1]->data[i];
|
||||
|
||||
/* C.5 step 3. (c) */
|
||||
- --j;
|
||||
}
|
||||
|
||||
/* allocate GSVALS */
|
||||
@@ -359,9 +358,8 @@ jbig2_decode_gray_scale_image(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
if (GSVALS[i] == NULL) {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "failed to allocate GSVALS: %d bytes", GSH * GSW);
|
||||
/* free already allocated */
|
||||
- for (j = i - 1; j >= 0; --j) {
|
||||
- jbig2_free(ctx->allocator, GSVALS[j]);
|
||||
- }
|
||||
+ for (j = i; j > 0;)
|
||||
+ jbig2_free(ctx->allocator, GSVALS[--j]);
|
||||
jbig2_free(ctx->allocator, GSVALS);
|
||||
GSVALS = NULL;
|
||||
goto cleanup;
|
||||
@@ -450,7 +448,7 @@ jbig2_decode_halftone_region(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
uint8_t **GI;
|
||||
Jbig2Image *HSKIP = NULL;
|
||||
Jbig2PatternDict *HPATS;
|
||||
- int i;
|
||||
+ uint32_t i;
|
||||
uint32_t mg, ng;
|
||||
int32_t x, y;
|
||||
uint8_t gray_val;
|
||||
@@ -476,7 +474,7 @@ jbig2_decode_halftone_region(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
|
||||
/* calculate ceil(log2(HNUMPATS)) */
|
||||
HBPP = 0;
|
||||
- while (HNUMPATS > (1 << ++HBPP));
|
||||
+ while (HNUMPATS > (1U << ++HBPP));
|
||||
|
||||
/* 6.6.5 point 4. decode gray-scale image as mentioned in annex C */
|
||||
GI = jbig2_decode_gray_scale_image(ctx, segment, data, size,
|
||||
diff --git a/jbig2dec/jbig2_huffman.c b/jbig2dec/jbig2_huffman.c
|
||||
index 4521b48..f77981b 100644
|
||||
--- a/jbig2dec/jbig2_huffman.c
|
||||
+++ b/jbig2dec/jbig2_huffman.c
|
||||
@@ -47,16 +47,16 @@ struct _Jbig2HuffmanState {
|
||||
is (offset + 4) * 8. */
|
||||
uint32_t this_word;
|
||||
uint32_t next_word;
|
||||
- int offset_bits;
|
||||
- int offset;
|
||||
- int offset_limit;
|
||||
+ uint32_t offset_bits;
|
||||
+ uint32_t offset;
|
||||
+ uint32_t offset_limit;
|
||||
|
||||
Jbig2WordStream *ws;
|
||||
Jbig2Ctx *ctx;
|
||||
};
|
||||
|
||||
static uint32_t
|
||||
-huff_get_next_word(Jbig2HuffmanState *hs, int offset)
|
||||
+huff_get_next_word(Jbig2HuffmanState *hs, uint32_t offset)
|
||||
{
|
||||
uint32_t word = 0;
|
||||
Jbig2WordStream *ws = hs->ws;
|
||||
@@ -213,7 +213,7 @@ jbig2_huffman_advance(Jbig2HuffmanState *hs, int offset)
|
||||
/* return the offset of the huffman decode pointer (in bytes)
|
||||
* from the beginning of the WordStream
|
||||
*/
|
||||
-int
|
||||
+uint32_t
|
||||
jbig2_huffman_offset(Jbig2HuffmanState *hs)
|
||||
{
|
||||
return hs->offset + (hs->offset_bits >> 3);
|
||||
diff --git a/jbig2dec/jbig2_huffman.h b/jbig2dec/jbig2_huffman.h
|
||||
index 5d1e6e0..cfda9e0 100644
|
||||
--- a/jbig2dec/jbig2_huffman.h
|
||||
+++ b/jbig2dec/jbig2_huffman.h
|
||||
@@ -64,7 +64,7 @@ void jbig2_huffman_skip(Jbig2HuffmanState *hs);
|
||||
|
||||
void jbig2_huffman_advance(Jbig2HuffmanState *hs, int offset);
|
||||
|
||||
-int jbig2_huffman_offset(Jbig2HuffmanState *hs);
|
||||
+uint32_t jbig2_huffman_offset(Jbig2HuffmanState *hs);
|
||||
|
||||
int32_t jbig2_huffman_get(Jbig2HuffmanState *hs, const Jbig2HuffmanTable *table, bool *oob);
|
||||
|
||||
diff --git a/jbig2dec/jbig2_image.c b/jbig2dec/jbig2_image.c
|
||||
index 1ae614e..94e5a4c 100644
|
||||
--- a/jbig2dec/jbig2_image.c
|
||||
+++ b/jbig2dec/jbig2_image.c
|
||||
@@ -32,10 +32,10 @@
|
||||
|
||||
/* allocate a Jbig2Image structure and its associated bitmap */
|
||||
Jbig2Image *
|
||||
-jbig2_image_new(Jbig2Ctx *ctx, int width, int height)
|
||||
+jbig2_image_new(Jbig2Ctx *ctx, uint32_t width, uint32_t height)
|
||||
{
|
||||
Jbig2Image *image;
|
||||
- int stride;
|
||||
+ uint32_t stride;
|
||||
int64_t check;
|
||||
|
||||
image = jbig2_new(ctx, Jbig2Image, 1);
|
||||
@@ -99,7 +99,7 @@ jbig2_image_free(Jbig2Ctx *ctx, Jbig2Image *image)
|
||||
|
||||
/* resize a Jbig2Image */
|
||||
Jbig2Image *
|
||||
-jbig2_image_resize(Jbig2Ctx *ctx, Jbig2Image *image, int width, int height)
|
||||
+jbig2_image_resize(Jbig2Ctx *ctx, Jbig2Image *image, uint32_t width, uint32_t height)
|
||||
{
|
||||
if (width == image->width) {
|
||||
/* check for integer multiplication overflow */
|
||||
@@ -133,11 +133,11 @@ jbig2_image_resize(Jbig2Ctx *ctx, Jbig2Image *image, int width, int height)
|
||||
static int
|
||||
jbig2_image_compose_unopt(Jbig2Ctx *ctx, Jbig2Image *dst, Jbig2Image *src, int x, int y, Jbig2ComposeOp op)
|
||||
{
|
||||
- int i, j;
|
||||
- int sw = src->width;
|
||||
- int sh = src->height;
|
||||
- int sx = 0;
|
||||
- int sy = 0;
|
||||
+ uint32_t i, j;
|
||||
+ uint32_t sw = src->width;
|
||||
+ uint32_t sh = src->height;
|
||||
+ uint32_t sx = 0;
|
||||
+ uint32_t sy = 0;
|
||||
|
||||
/* clip to the dst image boundaries */
|
||||
if (x < 0) {
|
||||
@@ -200,10 +200,10 @@ jbig2_image_compose_unopt(Jbig2Ctx *ctx, Jbig2Image *dst, Jbig2Image *src, int x
|
||||
int
|
||||
jbig2_image_compose(Jbig2Ctx *ctx, Jbig2Image *dst, Jbig2Image *src, int x, int y, Jbig2ComposeOp op)
|
||||
{
|
||||
- int i, j;
|
||||
- int w, h;
|
||||
- int leftbyte, rightbyte;
|
||||
- int shift;
|
||||
+ uint32_t i, j;
|
||||
+ uint32_t w, h;
|
||||
+ uint32_t leftbyte, rightbyte;
|
||||
+ uint32_t shift;
|
||||
uint8_t *s, *ss;
|
||||
uint8_t *d, *dd;
|
||||
uint8_t mask, rightmask;
|
||||
@@ -226,8 +226,8 @@ jbig2_image_compose(Jbig2Ctx *ctx, Jbig2Image *dst, Jbig2Image *src, int x, int
|
||||
h += y;
|
||||
y = 0;
|
||||
}
|
||||
- w = (x + w < dst->width) ? w : dst->width - x;
|
||||
- h = (y + h < dst->height) ? h : dst->height - y;
|
||||
+ w = ((uint32_t)x + w < dst->width) ? w : ((dst->width >= (uint32_t)x) ? dst->width - (uint32_t)x : 0);
|
||||
+ h = ((uint32_t)y + h < dst->height) ? h : ((dst->height >= (uint32_t)y) ? dst->height - (uint32_t)y : 0);
|
||||
#ifdef JBIG2_DEBUG
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_DEBUG, -1, "compositing %dx%d at (%d, %d) after clipping\n", w, h, x, y);
|
||||
#endif
|
||||
@@ -249,8 +249,8 @@ jbig2_image_compose(Jbig2Ctx *ctx, Jbig2Image *dst, Jbig2Image *src, int x, int
|
||||
}
|
||||
#endif
|
||||
|
||||
- leftbyte = x >> 3;
|
||||
- rightbyte = (x + w - 1) >> 3;
|
||||
+ leftbyte = (uint32_t)x >> 3;
|
||||
+ rightbyte = ((uint32_t)x + w - 1) >> 3;
|
||||
shift = x & 7;
|
||||
|
||||
/* general OR case */
|
||||
diff --git a/jbig2dec/jbig2_mmr.c b/jbig2dec/jbig2_mmr.c
|
||||
index d4cd3a2..390e27c 100644
|
||||
--- a/jbig2dec/jbig2_mmr.c
|
||||
+++ b/jbig2dec/jbig2_mmr.c
|
||||
@@ -38,19 +38,21 @@
|
||||
#include "jbig2_mmr.h"
|
||||
|
||||
typedef struct {
|
||||
- int width;
|
||||
- int height;
|
||||
+ uint32_t width;
|
||||
+ uint32_t height;
|
||||
const byte *data;
|
||||
size_t size;
|
||||
- int data_index;
|
||||
- int bit_index;
|
||||
+ uint32_t data_index;
|
||||
+ uint32_t bit_index;
|
||||
uint32_t word;
|
||||
} Jbig2MmrCtx;
|
||||
|
||||
+#define MINUS1 ((uint32_t)-1)
|
||||
+
|
||||
static void
|
||||
jbig2_decode_mmr_init(Jbig2MmrCtx *mmr, int width, int height, const byte *data, size_t size)
|
||||
{
|
||||
- int i;
|
||||
+ size_t i;
|
||||
uint32_t word = 0;
|
||||
|
||||
mmr->width = width;
|
||||
@@ -732,14 +734,14 @@ const mmr_table_node jbig2_mmr_black_decode[] = {
|
||||
#define getbit(buf, x) ( ( buf[x >> 3] >> ( 7 - (x & 7) ) ) & 1 )
|
||||
|
||||
static int
|
||||
-jbig2_find_changing_element(const byte *line, int x, int w)
|
||||
+jbig2_find_changing_element(const byte *line, uint32_t x, uint32_t w)
|
||||
{
|
||||
int a, b;
|
||||
|
||||
if (line == 0)
|
||||
- return w;
|
||||
+ return (int)w;
|
||||
|
||||
- if (x == -1) {
|
||||
+ if (x == MINUS1) {
|
||||
a = 0;
|
||||
x = 0;
|
||||
} else {
|
||||
@@ -758,7 +760,7 @@ jbig2_find_changing_element(const byte *line, int x, int w)
|
||||
}
|
||||
|
||||
static int
|
||||
-jbig2_find_changing_element_of_color(const byte *line, int x, int w, int color)
|
||||
+jbig2_find_changing_element_of_color(const byte *line, uint32_t x, uint32_t w, int color)
|
||||
{
|
||||
if (line == 0)
|
||||
return w;
|
||||
@@ -772,9 +774,9 @@ static const byte lm[8] = { 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01 };
|
||||
static const byte rm[8] = { 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE };
|
||||
|
||||
static void
|
||||
-jbig2_set_bits(byte *line, int x0, int x1)
|
||||
+jbig2_set_bits(byte *line, uint32_t x0, uint32_t x1)
|
||||
{
|
||||
- int a0, a1, b0, b1, a;
|
||||
+ uint32_t a0, a1, b0, b1, a;
|
||||
|
||||
a0 = x0 >> 3;
|
||||
a1 = x1 >> 3;
|
||||
@@ -831,8 +833,8 @@ jbig2_decode_get_run(Jbig2MmrCtx *mmr, const mmr_table_node *table, int initial_
|
||||
static int
|
||||
jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
{
|
||||
- int a0 = -1;
|
||||
- int a1, a2, b1, b2;
|
||||
+ uint32_t a0 = MINUS1;
|
||||
+ uint32_t a1, a2, b1, b2;
|
||||
int c = 0; /* 0 is white, black is 1 */
|
||||
|
||||
while (1) {
|
||||
@@ -840,7 +842,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
|
||||
/* printf ("%08x\n", word); */
|
||||
|
||||
- if (a0 >= mmr->width)
|
||||
+ if (a0 != MINUS1 && a0 >= mmr->width)
|
||||
break;
|
||||
|
||||
if ((word >> (32 - 3)) == 1) {
|
||||
@@ -848,7 +850,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
|
||||
jbig2_decode_mmr_consume(mmr, 3);
|
||||
|
||||
- if (a0 == -1)
|
||||
+ if (a0 == MINUS1)
|
||||
a0 = 0;
|
||||
|
||||
if (c == 0) {
|
||||
@@ -860,7 +862,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
a1 = mmr->width;
|
||||
if (a2 > mmr->width)
|
||||
a2 = mmr->width;
|
||||
- if (a2 < a1 || a1 < 0)
|
||||
+ if (a1 == MINUS1 || a2 < a1)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a1, a2);
|
||||
a0 = a2;
|
||||
@@ -874,7 +876,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
a1 = mmr->width;
|
||||
if (a2 > mmr->width)
|
||||
a2 = mmr->width;
|
||||
- if (a1 < a0 || a0 < 0)
|
||||
+ if (a0 == MINUS1 || a1 < a0)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a0, a1);
|
||||
a0 = a2;
|
||||
@@ -888,7 +890,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
b1 = jbig2_find_changing_element_of_color(ref, a0, mmr->width, !c);
|
||||
b2 = jbig2_find_changing_element(ref, b1, mmr->width);
|
||||
if (c) {
|
||||
- if (b2 < a0 || a0 < 0)
|
||||
+ if (a0 == MINUS1 || b2 < a0)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a0, b2);
|
||||
}
|
||||
@@ -900,7 +902,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
jbig2_decode_mmr_consume(mmr, 1);
|
||||
b1 = jbig2_find_changing_element_of_color(ref, a0, mmr->width, !c);
|
||||
if (c) {
|
||||
- if (b1 < a0 || a0 < 0)
|
||||
+ if (a0 == MINUS1 || b1 < a0)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a0, b1);
|
||||
}
|
||||
@@ -915,7 +917,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
if (b1 + 1 > mmr->width)
|
||||
break;
|
||||
if (c) {
|
||||
- if (b1 + 1 < a0 || a0 < 0)
|
||||
+ if (a0 == MINUS1 || b1 + 1 < a0)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a0, b1 + 1);
|
||||
}
|
||||
@@ -930,7 +932,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
if (b1 + 2 > mmr->width)
|
||||
break;
|
||||
if (c) {
|
||||
- if (b1 + 2 < a0 || a0 < 0)
|
||||
+ if (a0 == MINUS1 || b1 + 2 < a0)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a0, b1 + 2);
|
||||
}
|
||||
@@ -942,10 +944,10 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
/* printf ("VR(3)\n"); */
|
||||
jbig2_decode_mmr_consume(mmr, 7);
|
||||
b1 = jbig2_find_changing_element_of_color(ref, a0, mmr->width, !c);
|
||||
- if (b1 + 3 > mmr->width)
|
||||
+ if (b1 + 3 > (int)mmr->width)
|
||||
break;
|
||||
if (c) {
|
||||
- if (b1 + 3 < a0 || a0 < 0)
|
||||
+ if (a0 == MINUS1 || b1 + 3 < a0)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a0, b1 + 3);
|
||||
}
|
||||
@@ -957,10 +959,10 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
/* printf ("VL(1)\n"); */
|
||||
jbig2_decode_mmr_consume(mmr, 3);
|
||||
b1 = jbig2_find_changing_element_of_color(ref, a0, mmr->width, !c);
|
||||
- if (b1 - 1 < 0)
|
||||
+ if (b1 < 1)
|
||||
break;
|
||||
if (c) {
|
||||
- if (b1 - 1 < a0 || a0 < 0)
|
||||
+ if (a0 == MINUS1 || b1 - 1 < a0)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a0, b1 - 1);
|
||||
}
|
||||
@@ -972,7 +974,7 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
/* printf ("VL(2)\n"); */
|
||||
jbig2_decode_mmr_consume(mmr, 6);
|
||||
b1 = jbig2_find_changing_element_of_color(ref, a0, mmr->width, !c);
|
||||
- if (b1 - 2 < 0)
|
||||
+ if (b1 < 2)
|
||||
break;
|
||||
if (c) {
|
||||
if (b1 - 2 < a0 || a0 < 0)
|
||||
@@ -987,10 +989,10 @@ jbig2_decode_mmr_line(Jbig2MmrCtx *mmr, const byte *ref, byte *dst)
|
||||
/* printf ("VL(3)\n"); */
|
||||
jbig2_decode_mmr_consume(mmr, 7);
|
||||
b1 = jbig2_find_changing_element_of_color(ref, a0, mmr->width, !c);
|
||||
- if (b1 - 3 < 0)
|
||||
+ if (b1 < 3)
|
||||
break;
|
||||
if (c) {
|
||||
- if (b1 - 3 < a0 || a0 < 0)
|
||||
+ if (a0 == MINUS1 || b1 - 3 < a0)
|
||||
return -1;
|
||||
jbig2_set_bits(dst, a0, b1 - 3);
|
||||
}
|
||||
@@ -1009,10 +1011,10 @@ int
|
||||
jbig2_decode_generic_mmr(Jbig2Ctx *ctx, Jbig2Segment *segment, const Jbig2GenericRegionParams *params, const byte *data, size_t size, Jbig2Image *image)
|
||||
{
|
||||
Jbig2MmrCtx mmr;
|
||||
- const int rowstride = image->stride;
|
||||
+ const uint32_t rowstride = image->stride;
|
||||
byte *dst = image->data;
|
||||
byte *ref = NULL;
|
||||
- int y;
|
||||
+ uint32_t y;
|
||||
int code = 0;
|
||||
|
||||
jbig2_decode_mmr_init(&mmr, image->width, image->height, data, size);
|
||||
@@ -1047,10 +1049,10 @@ int
|
||||
jbig2_decode_halftone_mmr(Jbig2Ctx *ctx, const Jbig2GenericRegionParams *params, const byte *data, size_t size, Jbig2Image *image, size_t *consumed_bytes)
|
||||
{
|
||||
Jbig2MmrCtx mmr;
|
||||
- const int rowstride = image->stride;
|
||||
+ const uint32_t rowstride = image->stride;
|
||||
byte *dst = image->data;
|
||||
byte *ref = NULL;
|
||||
- int y;
|
||||
+ uint32_t y;
|
||||
int code = 0;
|
||||
const uint32_t EOFB = 0x001001;
|
||||
|
||||
diff --git a/jbig2dec/jbig2_page.c b/jbig2dec/jbig2_page.c
|
||||
index 110ff7c..1ed1c8a 100644
|
||||
--- a/jbig2dec/jbig2_page.c
|
||||
+++ b/jbig2dec/jbig2_page.c
|
||||
@@ -155,9 +155,9 @@ int
|
||||
jbig2_end_of_stripe(Jbig2Ctx *ctx, Jbig2Segment *segment, const uint8_t *segment_data)
|
||||
{
|
||||
Jbig2Page page = ctx->pages[ctx->current_page];
|
||||
- int end_row;
|
||||
+ uint32_t end_row;
|
||||
|
||||
- end_row = jbig2_get_int32(segment_data);
|
||||
+ end_row = jbig2_get_uint32(segment_data);
|
||||
if (end_row < page.end_row) {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_WARNING, segment->number,
|
||||
"end of stripe segment with non-positive end row advance" " (new end row %d vs current end row %d)", end_row, page.end_row);
|
||||
@@ -248,7 +248,7 @@ jbig2_page_add_result(Jbig2Ctx *ctx, Jbig2Page *page, Jbig2Image *image, int x,
|
||||
|
||||
/* grow the page to accomodate a new stripe if necessary */
|
||||
if (page->striped) {
|
||||
- int new_height = y + image->height + page->end_row;
|
||||
+ uint32_t new_height = y + image->height + page->end_row;
|
||||
|
||||
if (page->image->height < new_height) {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_DEBUG, -1, "growing page buffer to %d rows " "to accomodate new stripe", new_height);
|
||||
diff --git a/jbig2dec/jbig2_priv.h b/jbig2dec/jbig2_priv.h
|
||||
index 42ba496..3d44b42 100644
|
||||
--- a/jbig2dec/jbig2_priv.h
|
||||
+++ b/jbig2dec/jbig2_priv.h
|
||||
@@ -132,7 +132,7 @@ struct _Jbig2Page {
|
||||
uint32_t x_resolution, y_resolution; /* in pixels per meter */
|
||||
uint16_t stripe_size;
|
||||
bool striped;
|
||||
- int end_row;
|
||||
+ uint32_t end_row;
|
||||
uint8_t flags;
|
||||
Jbig2Image *image;
|
||||
};
|
||||
@@ -182,7 +182,7 @@ int jbig2_halftone_region(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *segm
|
||||
typedef struct _Jbig2WordStream Jbig2WordStream;
|
||||
|
||||
struct _Jbig2WordStream {
|
||||
- int (*get_next_word)(Jbig2WordStream *self, int offset, uint32_t *word);
|
||||
+ int (*get_next_word)(Jbig2WordStream *self, size_t offset, uint32_t *word);
|
||||
};
|
||||
|
||||
Jbig2WordStream *jbig2_word_stream_buf_new(Jbig2Ctx *ctx, const byte *data, size_t size);
|
||||
diff --git a/jbig2dec/jbig2_segment.c b/jbig2dec/jbig2_segment.c
|
||||
index 2e0db67..5b63706 100644
|
||||
--- a/jbig2dec/jbig2_segment.c
|
||||
+++ b/jbig2dec/jbig2_segment.c
|
||||
@@ -39,10 +39,10 @@ jbig2_parse_segment_header(Jbig2Ctx *ctx, uint8_t *buf, size_t buf_size, size_t
|
||||
uint8_t rtscarf;
|
||||
uint32_t rtscarf_long;
|
||||
uint32_t *referred_to_segments;
|
||||
- int referred_to_segment_count;
|
||||
- int referred_to_segment_size;
|
||||
- int pa_size;
|
||||
- int offset;
|
||||
+ uint32_t referred_to_segment_count;
|
||||
+ uint32_t referred_to_segment_size;
|
||||
+ uint32_t pa_size;
|
||||
+ uint32_t offset;
|
||||
|
||||
/* minimum possible size of a jbig2 segment header */
|
||||
if (buf_size < 11)
|
||||
@@ -83,7 +83,7 @@ jbig2_parse_segment_header(Jbig2Ctx *ctx, uint8_t *buf, size_t buf_size, size_t
|
||||
|
||||
/* 7.2.5 */
|
||||
if (referred_to_segment_count) {
|
||||
- int i;
|
||||
+ uint32_t i;
|
||||
|
||||
referred_to_segments = jbig2_new(ctx, uint32_t, referred_to_segment_count * referred_to_segment_size);
|
||||
if (referred_to_segments == NULL) {
|
||||
diff --git a/jbig2dec/jbig2_symbol_dict.c b/jbig2dec/jbig2_symbol_dict.c
|
||||
index 2c71a4c..11a2252 100644
|
||||
--- a/jbig2dec/jbig2_symbol_dict.c
|
||||
+++ b/jbig2dec/jbig2_symbol_dict.c
|
||||
@@ -88,40 +88,40 @@ jbig2_dump_symbol_dict(Jbig2Ctx *ctx, Jbig2Segment *segment)
|
||||
|
||||
/* return a new empty symbol dict */
|
||||
Jbig2SymbolDict *
|
||||
-jbig2_sd_new(Jbig2Ctx *ctx, int n_symbols)
|
||||
+jbig2_sd_new(Jbig2Ctx *ctx, uint32_t n_symbols)
|
||||
{
|
||||
- Jbig2SymbolDict *new = NULL;
|
||||
+ Jbig2SymbolDict *new_dict = NULL;
|
||||
|
||||
if (n_symbols < 0) {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_FATAL, -1, "Negative number of symbols in symbol dict: %d", n_symbols);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- new = jbig2_new(ctx, Jbig2SymbolDict, 1);
|
||||
- if (new != NULL) {
|
||||
- new->glyphs = jbig2_new(ctx, Jbig2Image *, n_symbols);
|
||||
- new->n_symbols = n_symbols;
|
||||
+ new_dict = jbig2_new(ctx, Jbig2SymbolDict, 1);
|
||||
+ if (new_dict != NULL) {
|
||||
+ new_dict->glyphs = jbig2_new(ctx, Jbig2Image *, n_symbols);
|
||||
+ new_dict->n_symbols = n_symbols;
|
||||
} else {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_FATAL, -1, "unable to allocate new empty symbol dict");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if (new->glyphs != NULL) {
|
||||
- memset(new->glyphs, 0, n_symbols * sizeof(Jbig2Image *));
|
||||
+ if (new_dict->glyphs != NULL) {
|
||||
+ memset(new_dict->glyphs, 0, n_symbols * sizeof(Jbig2Image *));
|
||||
} else {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_FATAL, -1, "unable to allocate glyphs for new empty symbol dict");
|
||||
- jbig2_free(ctx->allocator, new);
|
||||
+ jbig2_free(ctx->allocator, new_dict);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- return new;
|
||||
+ return new_dict;
|
||||
}
|
||||
|
||||
/* release the memory associated with a symbol dict */
|
||||
void
|
||||
jbig2_sd_release(Jbig2Ctx *ctx, Jbig2SymbolDict *dict)
|
||||
{
|
||||
- int i;
|
||||
+ uint32_t i;
|
||||
|
||||
if (dict == NULL)
|
||||
return;
|
||||
@@ -142,12 +142,12 @@ jbig2_sd_glyph(Jbig2SymbolDict *dict, unsigned int id)
|
||||
}
|
||||
|
||||
/* count the number of dictionary segments referred to by the given segment */
|
||||
-int
|
||||
+uint32_t
|
||||
jbig2_sd_count_referred(Jbig2Ctx *ctx, Jbig2Segment *segment)
|
||||
{
|
||||
int index;
|
||||
Jbig2Segment *rsegment;
|
||||
- int n_dicts = 0;
|
||||
+ uint32_t n_dicts = 0;
|
||||
|
||||
for (index = 0; index < segment->referred_to_segment_count; index++) {
|
||||
rsegment = jbig2_find_segment(ctx, segment->referred_to_segments[index]);
|
||||
@@ -166,8 +166,8 @@ jbig2_sd_list_referred(Jbig2Ctx *ctx, Jbig2Segment *segment)
|
||||
int index;
|
||||
Jbig2Segment *rsegment;
|
||||
Jbig2SymbolDict **dicts;
|
||||
- int n_dicts = jbig2_sd_count_referred(ctx, segment);
|
||||
- int dindex = 0;
|
||||
+ uint32_t n_dicts = jbig2_sd_count_referred(ctx, segment);
|
||||
+ uint32_t dindex = 0;
|
||||
|
||||
dicts = jbig2_new(ctx, Jbig2SymbolDict *, n_dicts);
|
||||
if (dicts == NULL) {
|
||||
@@ -195,10 +195,10 @@ jbig2_sd_list_referred(Jbig2Ctx *ctx, Jbig2Segment *segment)
|
||||
/* generate a new symbol dictionary by concatenating a list of
|
||||
existing dictionaries */
|
||||
Jbig2SymbolDict *
|
||||
-jbig2_sd_cat(Jbig2Ctx *ctx, int n_dicts, Jbig2SymbolDict **dicts)
|
||||
+jbig2_sd_cat(Jbig2Ctx *ctx, uint32_t n_dicts, Jbig2SymbolDict **dicts)
|
||||
{
|
||||
- int i, j, k, symbols;
|
||||
- Jbig2SymbolDict *new = NULL;
|
||||
+ uint32_t i, j, k, symbols;
|
||||
+ Jbig2SymbolDict *new_dict = NULL;
|
||||
|
||||
/* count the imported symbols and allocate a new array */
|
||||
symbols = 0;
|
||||
@@ -206,17 +206,17 @@ jbig2_sd_cat(Jbig2Ctx *ctx, int n_dicts, Jbig2SymbolDict **dicts)
|
||||
symbols += dicts[i]->n_symbols;
|
||||
|
||||
/* fill a new array with cloned glyph pointers */
|
||||
- new = jbig2_sd_new(ctx, symbols);
|
||||
- if (new != NULL) {
|
||||
+ new_dict = jbig2_sd_new(ctx, symbols);
|
||||
+ if (new_dict != NULL) {
|
||||
k = 0;
|
||||
for (i = 0; i < n_dicts; i++)
|
||||
for (j = 0; j < dicts[i]->n_symbols; j++)
|
||||
- new->glyphs[k++] = jbig2_image_clone(ctx, dicts[i]->glyphs[j]);
|
||||
+ new_dict->glyphs[k++] = jbig2_image_clone(ctx, dicts[i]->glyphs[j]);
|
||||
} else {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_WARNING, -1, "failed to allocate new symbol dictionary");
|
||||
}
|
||||
|
||||
- return new;
|
||||
+ return new_dict;
|
||||
}
|
||||
|
||||
/* Decoding routines */
|
||||
@@ -431,7 +431,7 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx,
|
||||
|
||||
if (REFAGGNINST > 1) {
|
||||
Jbig2Image *image;
|
||||
- int i;
|
||||
+ uint32_t i;
|
||||
|
||||
if (tparams == NULL) {
|
||||
/* First time through, we need to initialise the */
|
||||
@@ -512,7 +512,7 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx,
|
||||
uint32_t ID;
|
||||
int32_t RDX, RDY;
|
||||
int BMSIZE = 0;
|
||||
- int ninsyms = params->SDNUMINSYMS;
|
||||
+ uint32_t ninsyms = params->SDNUMINSYMS;
|
||||
int code1 = 0;
|
||||
int code2 = 0;
|
||||
int code3 = 0;
|
||||
@@ -609,8 +609,9 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx,
|
||||
if (params->SDHUFF && !params->SDREFAGG) {
|
||||
/* 6.5.9 */
|
||||
Jbig2Image *image;
|
||||
- int BMSIZE = jbig2_huffman_get(hs, params->SDHUFFBMSIZE, &code);
|
||||
- int j, x;
|
||||
+ uint32_t BMSIZE = jbig2_huffman_get(hs, params->SDHUFFBMSIZE, &code);
|
||||
+ uint32_t j;
|
||||
+ int x;
|
||||
|
||||
if (code || (BMSIZE < 0)) {
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "error decoding size of collective bitmap!");
|
||||
@@ -700,22 +701,22 @@ jbig2_decode_symbol_dict(Jbig2Ctx *ctx,
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "failed to allocate symbols exported from symbols dictionary");
|
||||
goto cleanup4;
|
||||
} else {
|
||||
- int i = 0;
|
||||
- int j = 0;
|
||||
- int k;
|
||||
+ uint32_t i = 0;
|
||||
+ uint32_t j = 0;
|
||||
+ uint32_t k;
|
||||
int exflag = 0;
|
||||
- int64_t limit = params->SDNUMINSYMS + params->SDNUMNEWSYMS;
|
||||
- int32_t exrunlength;
|
||||
+ uint32_t limit = params->SDNUMINSYMS + params->SDNUMNEWSYMS;
|
||||
+ uint32_t exrunlength;
|
||||
int zerolength = 0;
|
||||
|
||||
while (i < limit) {
|
||||
if (params->SDHUFF)
|
||||
exrunlength = jbig2_huffman_get(hs, SBHUFFRSIZE, &code);
|
||||
else
|
||||
- code = jbig2_arith_int_decode(IAEX, as, &exrunlength);
|
||||
+ code = jbig2_arith_int_decode(IAEX, as, (int32_t *)&exrunlength);
|
||||
/* prevent infinite loop */
|
||||
zerolength = exrunlength > 0 ? 0 : zerolength + 1;
|
||||
- if (code || (exrunlength > limit - i) || (exrunlength < 0) || (zerolength > 4) || (exflag && (exrunlength > params->SDNUMEXSYMS - j))) {
|
||||
+ if (code || (exrunlength > limit - i) || (exrunlength < 0) || (zerolength > 4) || (exflag && (exrunlength + j > params->SDNUMEXSYMS))) {
|
||||
if (code)
|
||||
jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "failed to decode exrunlength for exported symbols");
|
||||
else if (exrunlength <= 0)
|
||||
@@ -797,8 +798,8 @@ jbig2_symbol_dictionary(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *segmen
|
||||
{
|
||||
Jbig2SymbolDictParams params;
|
||||
uint16_t flags;
|
||||
- int sdat_bytes;
|
||||
- int offset;
|
||||
+ uint32_t sdat_bytes;
|
||||
+ uint32_t offset;
|
||||
Jbig2ArithCx *GB_stats = NULL;
|
||||
Jbig2ArithCx *GR_stats = NULL;
|
||||
int table_index = 0;
|
||||
@@ -951,7 +952,7 @@ jbig2_symbol_dictionary(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *segmen
|
||||
|
||||
/* 7.4.2.2 (2) */
|
||||
{
|
||||
- int n_dicts = jbig2_sd_count_referred(ctx, segment);
|
||||
+ uint32_t n_dicts = jbig2_sd_count_referred(ctx, segment);
|
||||
Jbig2SymbolDict **dicts = NULL;
|
||||
|
||||
if (n_dicts > 0) {
|
||||
diff --git a/jbig2dec/jbig2_symbol_dict.h b/jbig2dec/jbig2_symbol_dict.h
|
||||
index d56d62d..30211d4 100644
|
||||
--- a/jbig2dec/jbig2_symbol_dict.h
|
||||
+++ b/jbig2dec/jbig2_symbol_dict.h
|
||||
@@ -32,18 +32,18 @@ int jbig2_symbol_dictionary(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *se
|
||||
Jbig2Image *jbig2_sd_glyph(Jbig2SymbolDict *dict, unsigned int id);
|
||||
|
||||
/* return a new empty symbol dict */
|
||||
-Jbig2SymbolDict *jbig2_sd_new(Jbig2Ctx *ctx, int n_symbols);
|
||||
+Jbig2SymbolDict *jbig2_sd_new(Jbig2Ctx *ctx, uint32_t n_symbols);
|
||||
|
||||
/* release the memory associated with a symbol dict */
|
||||
void jbig2_sd_release(Jbig2Ctx *ctx, Jbig2SymbolDict *dict);
|
||||
|
||||
/* generate a new symbol dictionary by concatenating a list of
|
||||
existing dictionaries */
|
||||
-Jbig2SymbolDict *jbig2_sd_cat(Jbig2Ctx *ctx, int n_dicts, Jbig2SymbolDict **dicts);
|
||||
+Jbig2SymbolDict *jbig2_sd_cat(Jbig2Ctx *ctx, uint32_t n_dicts, Jbig2SymbolDict **dicts);
|
||||
|
||||
/* count the number of dictionary segments referred
|
||||
to by the given segment */
|
||||
-int jbig2_sd_count_referred(Jbig2Ctx *ctx, Jbig2Segment *segment);
|
||||
+uint32_t jbig2_sd_count_referred(Jbig2Ctx *ctx, Jbig2Segment *segment);
|
||||
|
||||
/* return an array of pointers to symbol dictionaries referred
|
||||
to by a segment */
|
||||
diff --git a/jbig2dec/jbig2_text.c b/jbig2dec/jbig2_text.c
|
||||
index 5c99640..e77460f 100644
|
||||
--- a/jbig2dec/jbig2_text.c
|
||||
+++ b/jbig2dec/jbig2_text.c
|
||||
@@ -55,7 +55,7 @@
|
||||
int
|
||||
jbig2_decode_text_region(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
const Jbig2TextRegionParams *params,
|
||||
- const Jbig2SymbolDict *const *dicts, const int n_dicts,
|
||||
+ const Jbig2SymbolDict *const *dicts, const uint32_t n_dicts,
|
||||
Jbig2Image *image, const byte *data, const size_t size, Jbig2ArithCx *GR_stats, Jbig2ArithState *as, Jbig2WordStream *ws)
|
||||
{
|
||||
/* relevent bits of 6.4.4 */
|
||||
@@ -476,19 +476,19 @@ cleanup2:
|
||||
int
|
||||
jbig2_text_region(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *segment_data)
|
||||
{
|
||||
- int offset = 0;
|
||||
+ uint32_t offset = 0;
|
||||
Jbig2RegionSegmentInfo region_info;
|
||||
Jbig2TextRegionParams params;
|
||||
Jbig2Image *image = NULL;
|
||||
Jbig2SymbolDict **dicts = NULL;
|
||||
- int n_dicts = 0;
|
||||
+ uint32_t n_dicts = 0;
|
||||
uint16_t flags = 0;
|
||||
uint16_t huffman_flags = 0;
|
||||
Jbig2ArithCx *GR_stats = NULL;
|
||||
int code = 0;
|
||||
Jbig2WordStream *ws = NULL;
|
||||
Jbig2ArithState *as = NULL;
|
||||
- int table_index = 0;
|
||||
+ uint32_t table_index = 0;
|
||||
const Jbig2HuffmanParams *huffman_params = NULL;
|
||||
|
||||
/* 7.4.1 */
|
||||
@@ -779,7 +779,7 @@ jbig2_text_region(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *segment_data
|
||||
code = jbig2_error(ctx, JBIG2_SEVERITY_FATAL, segment->number, "unable to retrive symbol dictionaries! previous parsing error?");
|
||||
goto cleanup1;
|
||||
} else {
|
||||
- int index;
|
||||
+ uint32_t index;
|
||||
|
||||
if (dicts[0] == NULL) {
|
||||
code = jbig2_error(ctx, JBIG2_SEVERITY_WARNING, segment->number, "unable to find first referenced symbol dictionary!");
|
||||
@@ -823,8 +823,8 @@ jbig2_text_region(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *segment_data
|
||||
}
|
||||
|
||||
if (!params.SBHUFF) {
|
||||
- int SBSYMCODELEN, index;
|
||||
- int SBNUMSYMS = 0;
|
||||
+ uint32_t SBSYMCODELEN, index;
|
||||
+ uint32_t SBNUMSYMS = 0;
|
||||
|
||||
for (index = 0; index < n_dicts; index++) {
|
||||
SBNUMSYMS += dicts[index]->n_symbols;
|
||||
@@ -840,7 +840,7 @@ jbig2_text_region(Jbig2Ctx *ctx, Jbig2Segment *segment, const byte *segment_data
|
||||
}
|
||||
|
||||
/* Table 31 */
|
||||
- for (SBSYMCODELEN = 0; (1 << SBSYMCODELEN) < SBNUMSYMS; SBSYMCODELEN++) {
|
||||
+ for (SBSYMCODELEN = 0; (1U << SBSYMCODELEN) < SBNUMSYMS; SBSYMCODELEN++) {
|
||||
}
|
||||
params.IAID = jbig2_arith_iaid_ctx_new(ctx, SBSYMCODELEN);
|
||||
params.IARI = jbig2_arith_int_ctx_new(ctx);
|
||||
diff --git a/jbig2dec/jbig2_text.h b/jbig2dec/jbig2_text.h
|
||||
index aec2732..51d242e 100644
|
||||
--- a/jbig2dec/jbig2_text.h
|
||||
+++ b/jbig2dec/jbig2_text.h
|
||||
@@ -70,5 +70,5 @@ typedef struct {
|
||||
int
|
||||
jbig2_decode_text_region(Jbig2Ctx *ctx, Jbig2Segment *segment,
|
||||
const Jbig2TextRegionParams *params,
|
||||
- const Jbig2SymbolDict *const *dicts, const int n_dicts,
|
||||
+ const Jbig2SymbolDict *const *dicts, const uint32_t n_dicts,
|
||||
Jbig2Image *image, const byte *data, const size_t size, Jbig2ArithCx *GR_stats, Jbig2ArithState *as, Jbig2WordStream *ws);
|
||||
--
|
||||
2.9.3
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
From 99cf218dbd5f6fbdbda2ce6872eb9ab7f475c353 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Tue, 27 Sep 2016 11:22:18 +0100
|
||||
Subject: [PATCH 1/2] Add pre-processor define for shared OpenJPEG
|
||||
|
||||
---
|
||||
Makefile.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index 25875ad..2ca2a80 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -290,7 +290,7 @@ JBIG2_CFLAGS=@JBIG2_AUTOCONF_CFLAGS@
|
||||
JPX_LIB=@JPX_DECODER@
|
||||
SHARE_JPX=@SHARE_JPX@
|
||||
JPXSRCDIR=@JPXDIR@
|
||||
-JPX_CFLAGS=@JPX_AUTOCONF_CFLAGS@ @JPX_SSE_CFLAGS@
|
||||
+JPX_CFLAGS=-DSHARE_JPX=$(SHARE_JPX) @JPX_AUTOCONF_CFLAGS@ @JPX_SSE_CFLAGS@
|
||||
|
||||
# uncomment the following three lines and one of the last two to
|
||||
# compile in the Luratech lwf_jp2 codec
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
From 4f19ab99cac2d8a7d21aea34d8aea0727fad52d3 Mon Sep 17 00:00:00 2001
|
||||
From: Didier Raboud <odyx@debian.org>
|
||||
Date: Thu, 6 Oct 2016 17:08:41 +0200
|
||||
Subject: [PATCH 2/2] Don't pass -DOPJ_STATIC when compiling the OpenJPEG code.
|
||||
|
||||
It makes the symbols hidden when including
|
||||
/usr/include/openjpeg-2.1/openjpeg.h.
|
||||
Fixes a FTBFS against libopenjp2-7 (>= 2.1.1).
|
||||
|
||||
Debian bug: https://bugs.debian.org/832873
|
||||
---
|
||||
base/lib.mak | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/base/lib.mak b/base/lib.mak
|
||||
index 173e2c6..cffdc9d 100644
|
||||
--- a/base/lib.mak
|
||||
+++ b/base/lib.mak
|
||||
@@ -1849,7 +1849,7 @@ $(GLOBJ)sjpx_openjpeg.$(OBJ) : $(GLSRC)sjpx_openjpeg.c $(AK) \
|
||||
$(memory__h) $(gserror_h) $(gserrors_h) \
|
||||
$(gdebug_h) $(strimpl_h) $(sjpx_openjpeg_h) $(LIB_MAK) $(MAKEDIRS)
|
||||
$(GLJPXOPJCC) $(GLO_)sjpx_openjpeg.$(OBJ) \
|
||||
- $(C_) -DOPJ_STATIC $(GLSRC)sjpx_openjpeg.c
|
||||
+ $(C_) $(GLSRC)sjpx_openjpeg.c
|
||||
|
||||
# ---------------- Pixel-difference filters ---------------- #
|
||||
# The Predictor facility of the LZW and Flate filters uses these.
|
||||
--
|
||||
2.7.4
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
From 329e0a6d187cc5b5698689d76636ed3214d7efa7 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Thu, 3 Nov 2016 13:09:27 +0000
|
||||
Subject: [PATCH] Bug 697286: handle GlyphDirectory as an array
|
||||
|
||||
For high level devices that need to copy CIDFonts, we need to establish the
|
||||
highest CID in a given CIDFont. If the font has a GlyphDirectory dictionary
|
||||
the only way to do so is to iterate through the keys to find the highest.
|
||||
|
||||
The code handling this ignored that the GlyphDirectory could be an array,
|
||||
which confused the dictionary content iterator, and caused a segfault.
|
||||
|
||||
In the case of an array, set the high CID to the highest index available in the
|
||||
array.
|
||||
---
|
||||
psi/zfcid.c | 18 +++++++++++-------
|
||||
1 file changed, 11 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/psi/zfcid.c b/psi/zfcid.c
|
||||
index ce583af..3098a22 100644
|
||||
--- a/psi/zfcid.c
|
||||
+++ b/psi/zfcid.c
|
||||
@@ -76,15 +76,19 @@ cid_font_data_param(os_ptr op, gs_font_cid_data *pdata, ref *pGlyphDirectory)
|
||||
* the number of CIDs in the font. We need to know the maximum CID
|
||||
* when copying fonts, so calculate and store it now.
|
||||
*/
|
||||
- index = dict_first(pgdir);
|
||||
- while (index >= 0) {
|
||||
- index = dict_next(pgdir, index, (ref *)&element);
|
||||
- if (index >= 0) {
|
||||
- if (element[0].value.intval > pdata->MaxCID)
|
||||
- pdata->MaxCID = element[0].value.intval;
|
||||
+ if (r_has_type(pgdir, t_dictionary)) {
|
||||
+ index = dict_first(pgdir);
|
||||
+ while (index >= 0) {
|
||||
+ index = dict_next(pgdir, index, (ref *)&element);
|
||||
+ if (index >= 0) {
|
||||
+ if (element[0].value.intval > pdata->MaxCID)
|
||||
+ pdata->MaxCID = element[0].value.intval;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
-
|
||||
+ else {
|
||||
+ pdata->MaxCID = r_size(pgdir) - 1;
|
||||
+ }
|
||||
return code;
|
||||
} else {
|
||||
return_error(gs_error_typecheck);
|
||||
--
|
||||
2.7.4
|
||||
+1227
File diff suppressed because it is too large
Load Diff
+16
-5
@@ -1,10 +1,21 @@
|
||||
diff -up ghostscript-9.00/lib/dvipdf.scripts ghostscript-9.00/lib/dvipdf
|
||||
--- ghostscript-9.00/lib/dvipdf.scripts 2010-06-03 01:32:07.000000000 +0100
|
||||
+++ ghostscript-9.00/lib/dvipdf 2010-09-23 09:56:35.592796899 +0100
|
||||
@@ -44,4 +44,4 @@ fi
|
||||
From 32d8df77bf3326f708c13d6913547c01ce6d728c Mon Sep 17 00:00:00 2001
|
||||
From: "David Kaspar [Dee'Kej]" <dkaspar@redhat.com>
|
||||
Date: Fri, 7 Oct 2016 13:57:01 +0200
|
||||
Subject: [PATCH] Make sure 'dvipdf' is being run securely
|
||||
|
||||
---
|
||||
lib/dvipdf | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/dvipdf b/lib/dvipdf
|
||||
index 802aeab..c92dfb0 100755
|
||||
--- a/lib/dvipdf
|
||||
+++ b/lib/dvipdf
|
||||
@@ -43,4 +43,4 @@ fi
|
||||
|
||||
# We have to include the options twice because -I only takes effect if it
|
||||
# appears before other options.
|
||||
-exec dvips -Ppdf $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile="$outfile" $OPTIONS -c .setpdfwrite -
|
||||
+exec dvips -R -Ppdf $DVIPSOPTIONS -q -f "$infile" | $GS_EXECUTABLE $OPTIONS -q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile="$outfile" $OPTIONS -c .setpdfwrite -
|
||||
|
||||
--
|
||||
2.7.4
|
||||
@@ -0,0 +1,92 @@
|
||||
From ea8addd686889af76d70031998680196913243ec Mon Sep 17 00:00:00 2001
|
||||
From: "David Kaspar [Dee'Kej]" <dkaspar@redhat.com>
|
||||
Date: Fri, 7 Oct 2016 12:20:29 +0200
|
||||
Subject: [PATCH 1/2] Fix error when using ImageMagick's convert:
|
||||
|
||||
Error: /undefined in .runlibfileexists
|
||||
---
|
||||
Resource/Init/gs_fonts.ps | 15 ++++++++++++---
|
||||
Resource/Init/gs_init.ps | 9 +++++++++
|
||||
2 files changed, 21 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Resource/Init/gs_fonts.ps b/Resource/Init/gs_fonts.ps
|
||||
index a3da615..77814b8 100644
|
||||
--- a/Resource/Init/gs_fonts.ps
|
||||
+++ b/Resource/Init/gs_fonts.ps
|
||||
@@ -96,10 +96,19 @@ userdict /.nativeFontmap .FontDirectory maxlength dict put
|
||||
% stack: dict file fontname filename|aliasname
|
||||
1 index type /stringtype eq
|
||||
1 index type /nametype eq and 1 index xcheck and
|
||||
- 1 index /run eq 2 index /.runlibfile eq or and {
|
||||
+ 1 index /run eq 2 index /.runlibfile eq 3 index /.runlibfileifexists eq or or and {
|
||||
% This is an inclusion entry.
|
||||
- pop findlibfile { exch pop } { file } ifelse
|
||||
- 2 index exch .readFontmap pop
|
||||
+ 0 index /.runlibfileifexists eq {
|
||||
+ pop findlibfile {
|
||||
+ exch pop
|
||||
+ 2 index exch .readFontmap pop
|
||||
+ } {
|
||||
+ pop
|
||||
+ } ifelse
|
||||
+ } {
|
||||
+ pop findlibfile { exch pop } { file } ifelse
|
||||
+ 2 index exch .readFontmap pop
|
||||
+ } ifelse
|
||||
} {
|
||||
% This is a real entry.
|
||||
% Read and pop tokens until a semicolon.
|
||||
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
|
||||
index ab7cfed..f9e035b 100644
|
||||
--- a/Resource/Init/gs_init.ps
|
||||
+++ b/Resource/Init/gs_init.ps
|
||||
@@ -689,6 +689,14 @@ systemdict /internaldict dup .makeinternaldict .makeoperator
|
||||
{ /undefinedfilename signalerror }
|
||||
ifelse
|
||||
} bind def
|
||||
+/runlibfileifexists
|
||||
+ { % We don't want to bind 'run' into this procedure,
|
||||
+ % since run may get redefined.
|
||||
+ findlibfile
|
||||
+ { exch pop /run .systemvar exec }
|
||||
+ { pop }
|
||||
+ ifelse
|
||||
+ } bind def
|
||||
/selectdevice
|
||||
{ finddevice setdevice .setdefaultscreen } bind def
|
||||
/signalerror % <object> <errorname> signalerror -
|
||||
@@ -857,6 +865,7 @@ userdict /.currentresourcefile //null put
|
||||
} bind def
|
||||
% Temporarily substitute it for the real runlibfile.
|
||||
/.runlibfile /runlibfile load def
|
||||
+/.runlibfileifexists /runlibfileifexists load def
|
||||
/runlibfile /runlibfile0 load def
|
||||
|
||||
% Create the error handling machinery.
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
From 9878f41a229c67aba2e62ee7ab22ff37c2e5a04f Mon Sep 17 00:00:00 2001
|
||||
From: "David Kaspar [Dee'Kej]" <dkaspar@redhat.com>
|
||||
Date: Fri, 7 Oct 2016 12:57:06 +0200
|
||||
Subject: [PATCH 2/2] Make sure customizations to
|
||||
/etc/ghostscript/Fontmap.local are used
|
||||
|
||||
For more info, see: https://bugzilla.redhat.com/show_bug.cgi?id=610301
|
||||
---
|
||||
Resource/Init/Fontmap | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/Resource/Init/Fontmap b/Resource/Init/Fontmap
|
||||
index ae5af96..72aeb1f 100644
|
||||
--- a/Resource/Init/Fontmap
|
||||
+++ b/Resource/Init/Fontmap
|
||||
@@ -2,3 +2,5 @@
|
||||
% See Fontmap.GS for the syntax of real Fontmap files.
|
||||
%% Replace 1 (Fontmap.GS)
|
||||
(Fontmap.GS) .runlibfile
|
||||
+% must be at the bottom of line to allow people overriding everything.
|
||||
+(Fontmap.local) .runlibfileifexists
|
||||
--
|
||||
2.7.4
|
||||
@@ -0,0 +1,100 @@
|
||||
From 54572e8cf529eeb6a01234341d01a2fd555204e6 Mon Sep 17 00:00:00 2001
|
||||
From: "David Kaspar [Dee'Kej]" <dkaspar@redhat.com>
|
||||
Date: Fri, 7 Oct 2016 13:38:13 +0200
|
||||
Subject: [PATCH] Use old names of urw-fonts
|
||||
|
||||
---
|
||||
Resource/Init/Fontmap.GS | 78 ++++++++++++++++++++++++++----------------------
|
||||
1 file changed, 43 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/Resource/Init/Fontmap.GS b/Resource/Init/Fontmap.GS
|
||||
index a9fa335..949c152 100644
|
||||
--- a/Resource/Init/Fontmap.GS
|
||||
+++ b/Resource/Init/Fontmap.GS
|
||||
@@ -81,41 +81,49 @@
|
||||
|
||||
% Aliases
|
||||
|
||||
-/AvantGarde-BookOblique /URWGothic-BookOblique ;
|
||||
-/AvantGarde-Book /URWGothic-Book ;
|
||||
-/AvantGarde-DemiOblique /URWGothic-DemiOblique ;
|
||||
-/AvantGarde-Demi /URWGothic-Demi ;
|
||||
-/Bookman-DemiItalic /URWBookman-DemiItalic ;
|
||||
-/Bookman-Demi /URWBookman-Demi ;
|
||||
-/Bookman-LightItalic /URWBookman-LightItalic ;
|
||||
-/Bookman-Light /URWBookman-Light ;
|
||||
-/Courier-Bold /NimbusMonoPS-Bold ;
|
||||
-/Courier-BoldOblique /NimbusMonoPS-BoldItalic ;
|
||||
-/Courier /NimbusMonoPS-Regular ;
|
||||
-/Courier-Oblique /NimbusMonoPS-Italic ;
|
||||
-/Helvetica-Bold /NimbusSans-Bold ;
|
||||
-/Helvetica-BoldOblique /NimbusSans-BoldOblique ;
|
||||
-/Helvetica-Narrow-Bold /NimbusSansNarrow-Bold ;
|
||||
-/Helvetica-Narrow-BoldOblique /NimbusSansNarrow-BdOblique ;
|
||||
-/Helvetica-Narrow /NimbusSansNarrow-Regular ;
|
||||
-/Helvetica-Narrow-Oblique /NimbusSansNarrow-Oblique ;
|
||||
-/Helvetica /NimbusSans-Regular ;
|
||||
-/Helvetica-Oblique /NimbusSans-Oblique ;
|
||||
-/NewCenturySchlbk-Bold /C059-Bold ;
|
||||
-/NewCenturySchlbk-BoldItalic /C059-BdIta ;
|
||||
-/NewCenturySchlbk-Italic /C059-Italic ;
|
||||
-/NewCenturySchlbk-Roman /C059-Roman ;
|
||||
-/Palatino-BoldItalic /P052-BoldItalic ;
|
||||
-/Palatino-Bold /P052-Bold ;
|
||||
-/Palatino-Italic /P052-Italic ;
|
||||
-/Palatino-Roman /P052-Roman ;
|
||||
-/Symbol /StandardSymbolsPS ;
|
||||
-/Times-BoldItalic /NimbusRoman-BoldItalic ;
|
||||
-/Times-Bold /NimbusRoman-Bold ;
|
||||
-/Times-Italic /NimbusRoman-Italic ;
|
||||
-/Times-Roman /NimbusRoman-Regular ;
|
||||
-/ZapfChancery-MediumItalic /Z003-MediumItalic ;
|
||||
-/ZapfDingbats /D050000L ;
|
||||
+/AvantGarde-BookOblique /URWGothicL-BookObli ;
|
||||
+/AvantGarde-Book /URWGothicL-Book ;
|
||||
+/AvantGarde-DemiOblique /URWGothicL-DemiObli ;
|
||||
+/AvantGarde-Demi /URWGothicL-Demi ;
|
||||
+
|
||||
+/Bookman-DemiItalic /URWBookmanL-DemiBoldItal ;
|
||||
+/Bookman-Demi /URWBookmanL-DemiBold ;
|
||||
+/Bookman-LightItalic /URWBookmanL-LighItal ;
|
||||
+/Bookman-Light /URWBookmanL-Ligh ;
|
||||
+
|
||||
+/Courier-Bold /NimbusMonL-Bold ;
|
||||
+/Courier-BoldOblique /NimbusMonL-BoldObli ;
|
||||
+/Courier /NimbusMonL-Regu ;
|
||||
+/Courier-Oblique /NimbusMonL-ReguObli ;
|
||||
+
|
||||
+/Helvetica-Bold /NimbusSanL-Bold ;
|
||||
+/Helvetica-BoldOblique /NimbusSanL-BoldItal ;
|
||||
+/Helvetica-Narrow-Bold /NimbusSanL-BoldCond ;
|
||||
+/Helvetica-Narrow-BoldOblique /NimbusSanL-BoldCondItal ;
|
||||
+/Helvetica-Narrow /NimbusSanL-ReguCond ;
|
||||
+/Helvetica-Narrow-Oblique /NimbusSanL-ReguCondItal ;
|
||||
+/Helvetica /NimbusSanL-Regu ;
|
||||
+/Helvetica-Oblique /NimbusSanL-ReguItal ;
|
||||
+
|
||||
+/NewCenturySchlbk-Bold /CenturySchL-Bold ;
|
||||
+/NewCenturySchlbk-BoldItalic /CenturySchL-BoldItal ;
|
||||
+/NewCenturySchlbk-Italic /CenturySchL-Ital ;
|
||||
+/NewCenturySchlbk-Roman /CenturySchL-Roma ;
|
||||
+
|
||||
+/Palatino-Roman /URWPalladioL-Roma ;
|
||||
+/Palatino-Italic /URWPalladioL-Ital ;
|
||||
+/Palatino-Bold /URWPalladioL-Bold ;
|
||||
+/Palatino-BoldItalic /URWPalladioL-BoldItal ;
|
||||
+
|
||||
+/Symbol /StandardSymL ;
|
||||
+
|
||||
+/Times-BoldItalic /NimbusRomNo9L-MediItal ;
|
||||
+/Times-Bold /NimbusRomNo9L-Medi ;
|
||||
+/Times-Italic /NimbusRomNo9L-ReguItal ;
|
||||
+/Times-Roman /NimbusRomNo9L-Regu ;
|
||||
+
|
||||
+/ZapfChancery-MediumItalic /URWChanceryL-MediItal ;
|
||||
+/ZapfDingbats /Dingbats ;
|
||||
|
||||
%
|
||||
%
|
||||
--
|
||||
2.7.4
|
||||
@@ -1,9 +0,0 @@
|
||||
diff -up ghostscript-8.71/Resource/Init/Fontmap.Fontmap.local ghostscript-8.71/Resource/Init/Fontmap
|
||||
--- ghostscript-8.71/Resource/Init/Fontmap.Fontmap.local 2008-08-08 05:22:38.000000000 +0100
|
||||
+++ ghostscript-8.71/Resource/Init/Fontmap 2010-09-03 11:53:47.273865979 +0100
|
||||
@@ -2,3 +2,5 @@
|
||||
% See Fontmap.GS for the syntax of real Fontmap files.
|
||||
%% Replace 1 (Fontmap.GS)
|
||||
(Fontmap.GS) .runlibfile
|
||||
+% must be at the bottom of line to allow people overriding everything.
|
||||
+(Fontmap.local) .runlibfileifexists
|
||||
@@ -1,11 +0,0 @@
|
||||
diff -up ghostscript-9.07/cups/gdevcups.c.gdevcups-debug-uninit ghostscript-9.07/cups/gdevcups.c
|
||||
--- ghostscript-9.07/cups/gdevcups.c.gdevcups-debug-uninit 2013-02-14 07:58:16.000000000 +0000
|
||||
+++ ghostscript-9.07/cups/gdevcups.c 2013-02-14 17:16:59.677951232 +0000
|
||||
@@ -830,6 +830,7 @@ cups_get_matrix(gx_device *pdev, /* I -
|
||||
dmprintf4(pdev->memory, "DEBUG2: PageSize = [ %d %d ], HWResolution = [ %d %d ]\n",
|
||||
cups->header.PageSize[0], cups->header.PageSize[1],
|
||||
cups->header.HWResolution[0], cups->header.HWResolution[1]);
|
||||
+ if (size_set)
|
||||
dmprintf4(pdev->memory, "DEBUG2: HWMargins = [ %.3f %.3f %.3f %.3f ]\n",
|
||||
pdev->HWMargins[0], pdev->HWMargins[1], pdev->HWMargins[2],
|
||||
pdev->HWMargins[3]);
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -up ghostscript-9.12/base/gsicc.c.gs694154 ghostscript-9.12/base/gsicc.c
|
||||
--- ghostscript-9.12/base/gsicc.c.gs694154 2014-03-25 08:52:16.000000000 +0000
|
||||
+++ ghostscript-9.12/base/gsicc.c 2014-03-26 11:32:31.406034840 +0000
|
||||
@@ -468,6 +468,8 @@ gx_remap_ICC_imagelab(const gs_client_co
|
||||
cmm_dev_profile_t *dev_profile;
|
||||
|
||||
code = dev_proc(dev, get_profile)(dev, &dev_profile);
|
||||
+ if (dev_profile == NULL)
|
||||
+ return gs_throw(gs_error_Fatal, "Attempting to do ICC remap with no profile");
|
||||
num_des_comps = gsicc_get_device_profile_comps(dev_profile);
|
||||
rendering_params.black_point_comp = pis->blackptcomp;
|
||||
rendering_params.graphics_type_tag = dev->graphics_type_tag;
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -up ghostscript-9.12/base/gsicc_manage.c.icc-missing-check ghostscript-9.12/base/gsicc_manage.c
|
||||
--- ghostscript-9.12/base/gsicc_manage.c.icc-missing-check 2014-03-26 11:31:11.296570797 +0000
|
||||
+++ ghostscript-9.12/base/gsicc_manage.c 2014-03-26 11:32:10.384912584 +0000
|
||||
@@ -613,6 +613,8 @@ gsicc_set_srcgtag_struct(gsicc_manager_t
|
||||
icc_profile =
|
||||
gsicc_profile_new(str, mem, curr_ptr, strlen(curr_ptr));
|
||||
code = sfclose(str);
|
||||
+ }
|
||||
+ if (str != NULL && icc_profile != NULL) {
|
||||
gsicc_init_profile_info(icc_profile);
|
||||
cmm = gsCMM_DEFAULT;
|
||||
/* Check if this object is a devicelink profile.
|
||||
@@ -1,35 +0,0 @@
|
||||
diff -up ghostscript-9.06/base/gsicc_manage.c.iccprofiles-initdir ghostscript-9.06/base/gsicc_manage.c
|
||||
--- ghostscript-9.06/base/gsicc_manage.c.iccprofiles-initdir 2012-08-09 13:58:22.102364807 +0100
|
||||
+++ ghostscript-9.06/base/gsicc_manage.c 2012-08-09 14:09:24.495864641 +0100
|
||||
@@ -38,6 +38,7 @@
|
||||
#include "gsicc_create.h"
|
||||
#include "gpmisc.h"
|
||||
#include "gxdevice.h"
|
||||
+#include "gxiodev.h"
|
||||
|
||||
#define ICC_HEADER_SIZE 128
|
||||
|
||||
@@ -2176,8 +2177,21 @@ gs_currenticcdirectory(const gs_state *
|
||||
const gs_lib_ctx_t *lib_ctx = pgs->memory->gs_lib_ctx;
|
||||
|
||||
if (lib_ctx->profiledir == NULL) {
|
||||
- pval->data = (const byte *)rfs;
|
||||
- pval->size = strlen(rfs);
|
||||
+ int have_rom_device = 0;
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < gx_io_device_table_count; i++) {
|
||||
+ const gx_io_device *iodev = lib_ctx->io_device_table[i];
|
||||
+ const char *dname = iodev->dname;
|
||||
+
|
||||
+ if (dname && strlen(dname) == 5 && !memcmp("%rom%", dname, 5)) {
|
||||
+ have_rom_device = 1;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ pval->data = (const byte *)(have_rom_device ? rfs : "");
|
||||
+ pval->size = strlen((const char *)pval->data);
|
||||
pval->persistent = true;
|
||||
} else {
|
||||
pval->data = (const byte *)(lib_ctx->profiledir);
|
||||
@@ -1,14 +0,0 @@
|
||||
diff -up ghostscript-8.61/ijs/Makefile.am.multilib ghostscript-8.61/ijs/Makefile.am
|
||||
diff -up ghostscript-8.61/ijs/ijs-config.in.multilib ghostscript-8.61/ijs/ijs-config.in
|
||||
--- ghostscript-8.61/ijs/ijs-config.in.multilib 2002-01-31 19:09:46.000000000 +0000
|
||||
+++ ghostscript-8.61/ijs/ijs-config.in 2007-11-23 09:19:18.000000000 +0000
|
||||
@@ -43,8 +43,7 @@ while test $# -gt 0; do
|
||||
echo $includes
|
||||
;;
|
||||
--libs)
|
||||
- libdirs=-L@libdir@
|
||||
- echo $libdirs -lijs
|
||||
+ echo -lijs
|
||||
;;
|
||||
*)
|
||||
echo "${usage}" 1>&2
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -up ghostscript-8.64/psi/int.mak.noopt ghostscript-8.64/psi/int.mak
|
||||
--- ghostscript-8.64/psi/int.mak.noopt 2008-12-26 07:25:31.000000000 +0000
|
||||
+++ ghostscript-8.64/psi/int.mak 2009-02-04 11:33:48.000000000 +0000
|
||||
@@ -111,7 +111,7 @@ $(PSOBJ)igc.$(OBJ) : $(PSSRC)igc.c $(GH)
|
||||
$(PSOBJ)igcref.$(OBJ) : $(PSSRC)igcref.c $(GH) $(memory__h)\
|
||||
$(gsexit_h) $(gsstruct_h)\
|
||||
$(iastate_h) $(idebug_h) $(igc_h) $(iname_h) $(ipacked_h) $(store_h)
|
||||
- $(PSCC) $(PSO_)igcref.$(OBJ) $(C_) $(PSSRC)igcref.c
|
||||
+ $(PSCC) -O0 $(PSO_)igcref.$(OBJ) $(C_) $(PSSRC)igcref.c
|
||||
|
||||
$(PSOBJ)igcstr.$(OBJ) : $(PSSRC)igcstr.c $(GH) $(memory__h)\
|
||||
$(gsmdebug_h) $(gsstruct_h) $(iastate_h) $(igcstr_h)
|
||||
@@ -1,52 +0,0 @@
|
||||
diff -up ghostscript-9.12/Resource/Init/gs_fonts.ps.runlibfileifexists ghostscript-9.12/Resource/Init/gs_fonts.ps
|
||||
--- ghostscript-9.12/Resource/Init/gs_fonts.ps.runlibfileifexists 2014-03-25 08:52:16.000000000 +0000
|
||||
+++ ghostscript-9.12/Resource/Init/gs_fonts.ps 2014-03-26 12:01:48.248748767 +0000
|
||||
@@ -95,10 +95,19 @@ userdict /Fontmap .FontDirectory maxleng
|
||||
% stack: dict file fontname filename|aliasname
|
||||
1 index type /stringtype eq
|
||||
1 index type /nametype eq and 1 index xcheck and
|
||||
- 1 index /run eq 2 index /.runlibfile eq or and {
|
||||
+ 1 index /run eq 2 index /.runlibfile eq 3 index /.runlibfileifexists eq or or and {
|
||||
% This is an inclusion entry.
|
||||
- pop findlibfile { exch pop } { file } ifelse
|
||||
- 2 index exch .readFontmap pop
|
||||
+ 0 index /.runlibfileifexists eq {
|
||||
+ pop findlibfile {
|
||||
+ exch pop
|
||||
+ 2 index exch .readFontmap pop
|
||||
+ } {
|
||||
+ pop
|
||||
+ } ifelse
|
||||
+ } {
|
||||
+ pop findlibfile { exch pop } { file } ifelse
|
||||
+ 2 index exch .readFontmap pop
|
||||
+ } ifelse
|
||||
} {
|
||||
% This is a real entry.
|
||||
% Read and pop tokens until a semicolon.
|
||||
diff -up ghostscript-9.12/Resource/Init/gs_init.ps.runlibfileifexists ghostscript-9.12/Resource/Init/gs_init.ps
|
||||
--- ghostscript-9.12/Resource/Init/gs_init.ps.runlibfileifexists 2014-03-25 08:52:16.000000000 +0000
|
||||
+++ ghostscript-9.12/Resource/Init/gs_init.ps 2014-03-26 12:01:48.248748767 +0000
|
||||
@@ -681,6 +681,14 @@ systemdict /internaldict dup .makeintern
|
||||
{ /undefinedfilename signalerror }
|
||||
ifelse
|
||||
} bind def
|
||||
+/runlibfileifexists
|
||||
+ { % We don't want to bind 'run' into this procedure,
|
||||
+ % since run may get redefined.
|
||||
+ findlibfile
|
||||
+ { exch pop /run .systemvar exec }
|
||||
+ { pop }
|
||||
+ ifelse
|
||||
+ } bind def
|
||||
/selectdevice
|
||||
{ finddevice setdevice .setdefaultscreen } bind def
|
||||
/signalerror % <object> <errorname> signalerror -
|
||||
@@ -849,6 +857,7 @@ userdict /.currentresourcefile //null pu
|
||||
} bind def
|
||||
% Temporarily substitute it for the real runlibfile.
|
||||
/.runlibfile /runlibfile load def
|
||||
+/.runlibfileifexists /runlibfileifexists load def
|
||||
/runlibfile /runlibfile0 load def
|
||||
|
||||
% Create the error handling machinery.
|
||||
@@ -1,22 +0,0 @@
|
||||
diff -up ghostscript-9.07/base/wrfont.c.wrf-snprintf ghostscript-9.07/base/wrfont.c
|
||||
--- ghostscript-9.07/base/wrfont.c.wrf-snprintf 2013-07-01 13:02:33.373244683 +0100
|
||||
+++ ghostscript-9.07/base/wrfont.c 2013-07-01 13:04:55.022864299 +0100
|
||||
@@ -72,7 +72,8 @@ WRF_wfloat(WRF_output * a_output, double
|
||||
{
|
||||
char buffer[32];
|
||||
|
||||
- gs_sprintf(buffer, "%f", a_float);
|
||||
+ if (gs_snprintf(buffer, sizeof (buffer), "%f", a_float) >= sizeof (buffer))
|
||||
+ abort();
|
||||
WRF_wstring(a_output, buffer);
|
||||
}
|
||||
|
||||
@@ -81,6 +82,7 @@ WRF_wint(WRF_output * a_output, long a_i
|
||||
{
|
||||
char buffer[32];
|
||||
|
||||
- gs_sprintf(buffer, "%ld", a_int);
|
||||
+ if (gs_snprintf(buffer, sizeof (buffer), "%ld", a_int) >= sizeof (buffer))
|
||||
+ abort();
|
||||
WRF_wstring(a_output, buffer);
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>A PostScript interpreter and renderer</Summary>
|
||||
<Description>ghostscript is a set of software that provides a PostScript interpreter, a set of C procedures and an interpreter for PDF files. ghostscript is normally used to display PostScript files and to print PostScript files to non-PostScript printers.</Description>
|
||||
<Archive sha1sum="695c56ecb296e9a0d97bc885c3180b0538aafbf5" type="targz">https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs919/ghostscript-9.19.tar.gz</Archive>
|
||||
<Archive sha1sum="ed63f43482f5af60dff52e81b2d9478da3ad1e3e" type="tarxz">https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs920/ghostscript-9.20.tar.xz</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>tiff-devel</Dependency>
|
||||
<Dependency>zlib-devel</Dependency>
|
||||
@@ -21,27 +21,26 @@
|
||||
<Dependency>libSM-devel</Dependency>
|
||||
<Dependency>freetype-devel</Dependency>
|
||||
<Dependency>libjpeg-turbo-devel</Dependency>
|
||||
<Dependency versionFrom="2.6">lcms2-devel</Dependency>
|
||||
<Dependency versionFrom="2.8">lcms2-devel</Dependency>
|
||||
<Dependency>libXt-devel</Dependency>
|
||||
<Dependency>libpng-devel</Dependency>
|
||||
<Dependency>libpaper-devel</Dependency>
|
||||
<Dependency>fontconfig-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- Ubuntu patches -->
|
||||
<!--Patch level="1">ubuntu/02_gs-man-fix-for-debian.patch</Patch-->
|
||||
<!-- Fedora patches -->
|
||||
<!--Patch level="1">fedora/ghostscript-Fontmap.local.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-gdevcups-debug-uninit.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-iccprofiles-initdir.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-multilib.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-noopt.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-runlibfileifexists.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-scripts.patch</Patch-->
|
||||
<Patch level="1">fedora/ghostscript-sys-zlib.patch</Patch>
|
||||
<!--Patch level="1">fedora/ghostscript-icc-missing-check.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-wrf-snprintf.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-gs694154.patch</Patch-->
|
||||
<Patch level="1">fedora/ghostscript-9.20-cve-2016-7976.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-cve-2016-7977.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-cve-2016-7978.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-cve-2016-7979.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-cve-2016-8602.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-cve-2016-9601.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-fix-openjpeg-system-build.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-handle-glyphdirectory-correctly.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-remove-and-reimplement-ConvertUTF.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-run-dvipdf-securely.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-runlibfileifexists.patch</Patch>
|
||||
<Patch level="1">fedora/ghostscript-9.20-urw-fonts-naming.patch</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -54,7 +53,7 @@
|
||||
<Dependency>freetype</Dependency>
|
||||
<Dependency>libjpeg-turbo</Dependency>
|
||||
<Dependency>tiff</Dependency>
|
||||
<Dependency versionFrom="2.6">lcms2</Dependency>
|
||||
<Dependency versionFrom="2.8">lcms2</Dependency>
|
||||
<Dependency>libXt</Dependency>
|
||||
<Dependency>libpaper</Dependency>
|
||||
<Dependency>fontconfig</Dependency>
|
||||
@@ -137,6 +136,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>9.20</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="3">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>9.19</Version>
|
||||
|
||||
@@ -26,6 +26,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.4.7</Version>
|
||||
<Comment>Rebuild.</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-06-09</Date>
|
||||
<Version>0.4.7</Version>
|
||||
|
||||
@@ -34,6 +34,8 @@ def setup():
|
||||
shelltools.export("CC", "gcc")
|
||||
shelltools.export("CXX", "g++")
|
||||
|
||||
shelltools.system("patch -Np0 -d projects/compiler-rt < msan-prevent-initialization-failure-with-newer-glibc.patch")
|
||||
shelltools.system("patch -Rp1 -i AMDGPU-Fix-an-interaction-between-WQM-and-polygon-stippling.patch")
|
||||
|
||||
if get.buildTYPE() == "emul32":
|
||||
shelltools.export("CC", "gcc -m32")
|
||||
@@ -63,14 +65,17 @@ def setup():
|
||||
|
||||
cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \
|
||||
%s \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DLLVM_ENABLE_FFI=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
||||
-DLLDB_DISABLE_LIBEDIT=1 \
|
||||
-DLLVM_INCLUDEDIR=/usr/include \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DLLVM_BUILD_LLVM_DYLIB=ON \
|
||||
-DLLVM_LINK_LLVM_DYLIB=ON \
|
||||
-DLLVM_INSTALL_UTILS=ON \
|
||||
-DLLVM_ENABLE_RTTI=ON \
|
||||
-DLLVM_ENABLE_FFI=ON \
|
||||
-DLLDB_DISABLE_LIBEDIT=1 \
|
||||
-DLLVM_INCLUDEDIR=/usr/include \
|
||||
-DFFI_INCLUDE_DIR=/usr/lib/libffi-3.2.1/include \
|
||||
-DLLVM_TARGETS_TO_BUILD='host;AMDGPU'" % options, sourceDir=".." )
|
||||
-DLLVM_BINUTILS_INCDIR=/usr/include" % options, sourceDir=".." )
|
||||
|
||||
def build():
|
||||
shelltools.makedirs("build")
|
||||
@@ -86,10 +91,10 @@ def install():
|
||||
|
||||
if get.buildTYPE() == "emul32":
|
||||
|
||||
pisitools.domove("/emul32/lib32/", "/usr/")
|
||||
pisitools.insinto("/usr/include/llvm/Config/","%s/emul32/include/llvm/Config/llvm-config.h" % get.installDIR(),"llvm-config-32.h")
|
||||
pisitools.insinto("/usr/bin/","%s/emul32/bin/llvm-config" % get.installDIR(),"llvm-config-32")
|
||||
pisitools.removeDir("/emul32")
|
||||
#pisitools.domove("/emul32/lib32/", "/usr/")
|
||||
pisitools.insinto("/usr/include/llvm/Config/","%s/usr/include/llvm/Config/llvm-config.h" % get.installDIR(),"llvm-config-32.h")
|
||||
pisitools.insinto("/usr/bin/","%s/usr/bin/llvm-config" % get.installDIR(),"llvm-config-32")
|
||||
#pisitools.removeDir("/emul32")
|
||||
|
||||
shelltools.cd ("..")
|
||||
|
||||
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
From 25e2616626caafb896517e18cd8aa724fba2b200 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Stellard <thomas.stellard@amd.com>
|
||||
Date: Tue, 29 Nov 2016 03:41:28 +0000
|
||||
Subject: [PATCH] Merging r280589:
|
||||
|
||||
------------------------------------------------------------------------
|
||||
r280589 | nhaehnle | 2016-09-03 05:26:32 -0700 (Sat, 03 Sep 2016) | 19 lines
|
||||
|
||||
AMDGPU: Fix an interaction between WQM and polygon stippling
|
||||
|
||||
Summary:
|
||||
This fixes a rare bug in polygon stippling with non-monolithic pixel shaders.
|
||||
|
||||
The underlying problem is as follows: the prolog part contains the polygon
|
||||
stippling sequence, i.e. a kill. The main part then enables WQM based on the
|
||||
_reduced_ exec mask, effectively undoing most of the polygon stippling.
|
||||
|
||||
Since we cannot know whether polygon stippling will be used, the main part
|
||||
of a non-monolithic shader must always return to exact mode to fix this
|
||||
problem.
|
||||
|
||||
Reviewers: arsenm, tstellarAMD, mareko
|
||||
|
||||
Subscribers: arsenm, llvm-commits, kzhuravl
|
||||
|
||||
Differential Revision: https://reviews.llvm.org/D23131
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_39@288105 91177308-0d34-0410-b5e6-96231b3b80d8
|
||||
---
|
||||
lib/Target/AMDGPU/SIInstructions.td | 1 +
|
||||
lib/Target/AMDGPU/SIWholeQuadMode.cpp | 7 -----
|
||||
test/CodeGen/AMDGPU/wqm.ll | 49 ++++++++++++++++++++++++++++++++---
|
||||
3 files changed, 46 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/lib/Target/AMDGPU/SIInstructions.td b/lib/Target/AMDGPU/SIInstructions.td
|
||||
index 18b7d5d..dde5f2f 100644
|
||||
--- a/lib/Target/AMDGPU/SIInstructions.td
|
||||
+++ b/lib/Target/AMDGPU/SIInstructions.td
|
||||
@@ -2029,6 +2029,7 @@ def SI_RETURN : PseudoInstSI <
|
||||
let hasSideEffects = 1;
|
||||
let SALU = 1;
|
||||
let hasNoSchedulingInfo = 1;
|
||||
+ let DisableWQM = 1;
|
||||
}
|
||||
|
||||
let Uses = [EXEC], Defs = [EXEC, VCC, M0],
|
||||
diff --git a/lib/Target/AMDGPU/SIWholeQuadMode.cpp b/lib/Target/AMDGPU/SIWholeQuadMode.cpp
|
||||
index b200c15..1534d58 100644
|
||||
--- a/lib/Target/AMDGPU/SIWholeQuadMode.cpp
|
||||
+++ b/lib/Target/AMDGPU/SIWholeQuadMode.cpp
|
||||
@@ -219,13 +219,6 @@ char SIWholeQuadMode::scanInstructions(MachineFunction &MF,
|
||||
markInstruction(MI, Flags, Worklist);
|
||||
GlobalFlags |= Flags;
|
||||
}
|
||||
-
|
||||
- if (WQMOutputs && MBB.succ_empty()) {
|
||||
- // This is a prolog shader. Make sure we go back to exact mode at the end.
|
||||
- Blocks[&MBB].OutNeeds = StateExact;
|
||||
- Worklist.push_back(&MBB);
|
||||
- GlobalFlags |= StateExact;
|
||||
- }
|
||||
}
|
||||
|
||||
return GlobalFlags;
|
||||
diff --git a/test/CodeGen/AMDGPU/wqm.ll b/test/CodeGen/AMDGPU/wqm.ll
|
||||
index 809a7ba..41e4264 100644
|
||||
--- a/test/CodeGen/AMDGPU/wqm.ll
|
||||
+++ b/test/CodeGen/AMDGPU/wqm.ll
|
||||
@@ -17,17 +17,18 @@ main_body:
|
||||
;CHECK-LABEL: {{^}}test2:
|
||||
;CHECK-NEXT: ; %main_body
|
||||
;CHECK-NEXT: s_wqm_b64 exec, exec
|
||||
-;CHECK: image_sample
|
||||
;CHECK-NOT: exec
|
||||
-;CHECK: _load_dword v0,
|
||||
-define amdgpu_ps float @test2(<8 x i32> inreg %rsrc, <4 x i32> inreg %sampler, float addrspace(1)* inreg %ptr, <4 x i32> %c) {
|
||||
+define amdgpu_ps void @test2(<8 x i32> inreg %rsrc, <4 x i32> inreg %sampler, float addrspace(1)* inreg %ptr, <4 x i32> %c) {
|
||||
main_body:
|
||||
%c.1 = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %c, <8 x i32> %rsrc, <4 x i32> %sampler, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
|
||||
%c.2 = bitcast <4 x float> %c.1 to <4 x i32>
|
||||
%c.3 = extractelement <4 x i32> %c.2, i32 0
|
||||
%gep = getelementptr float, float addrspace(1)* %ptr, i32 %c.3
|
||||
%data = load float, float addrspace(1)* %gep
|
||||
- ret float %data
|
||||
+
|
||||
+ call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %data, float undef, float undef, float undef)
|
||||
+
|
||||
+ ret void
|
||||
}
|
||||
|
||||
; ... but disabled for stores (and, in this simple case, not re-enabled).
|
||||
@@ -414,6 +415,46 @@ entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
+; Must return to exact at the end of a non-void returning shader,
|
||||
+; otherwise the EXEC mask exported by the epilog will be wrong. This is true
|
||||
+; even if the shader has no kills, because a kill could have happened in a
|
||||
+; previous shader fragment.
|
||||
+;
|
||||
+; CHECK-LABEL: {{^}}test_nonvoid_return:
|
||||
+; CHECK: s_mov_b64 [[LIVE:s\[[0-9]+:[0-9]+\]]], exec
|
||||
+; CHECK: s_wqm_b64 exec, exec
|
||||
+;
|
||||
+; CHECK: s_and_b64 exec, exec, [[LIVE]]
|
||||
+; CHECK-NOT: exec
|
||||
+define amdgpu_ps <4 x float> @test_nonvoid_return() nounwind {
|
||||
+ %tex = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
|
||||
+ %tex.i = bitcast <4 x float> %tex to <4 x i32>
|
||||
+ %dtex = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %tex.i, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
|
||||
+ ret <4 x float> %dtex
|
||||
+}
|
||||
+
|
||||
+; CHECK-LABEL: {{^}}test_nonvoid_return_unreachable:
|
||||
+; CHECK: s_mov_b64 [[LIVE:s\[[0-9]+:[0-9]+\]]], exec
|
||||
+; CHECK: s_wqm_b64 exec, exec
|
||||
+;
|
||||
+; CHECK: s_and_b64 exec, exec, [[LIVE]]
|
||||
+; CHECK-NOT: exec
|
||||
+define amdgpu_ps <4 x float> @test_nonvoid_return_unreachable(i32 inreg %c) nounwind {
|
||||
+entry:
|
||||
+ %tex = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
|
||||
+ %tex.i = bitcast <4 x float> %tex to <4 x i32>
|
||||
+ %dtex = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> %tex.i, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
|
||||
+
|
||||
+ %cc = icmp sgt i32 %c, 0
|
||||
+ br i1 %cc, label %if, label %else
|
||||
+
|
||||
+if:
|
||||
+ store volatile <4 x float> %dtex, <4 x float>* undef
|
||||
+ unreachable
|
||||
+
|
||||
+else:
|
||||
+ ret <4 x float> %dtex
|
||||
+}
|
||||
|
||||
declare void @llvm.amdgcn.image.store.v4i32(<4 x float>, <4 x i32>, <8 x i32>, i32, i1, i1, i1, i1) #1
|
||||
declare void @llvm.amdgcn.buffer.store.f32(float, <4 x i32>, i32, i32, i1, i1) #1
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
Index: lib/msan/msan_interceptors.cc
|
||||
===================================================================
|
||||
--- lib/msan/msan_interceptors.cc (revision 282231)
|
||||
+++ lib/msan/msan_interceptors.cc (revision 282232)
|
||||
@@ -64,6 +64,23 @@
|
||||
return in_interceptor_scope;
|
||||
}
|
||||
|
||||
+static uptr allocated_for_dlsym;
|
||||
+static const uptr kDlsymAllocPoolSize = 1024;
|
||||
+static uptr alloc_memory_for_dlsym[kDlsymAllocPoolSize];
|
||||
+
|
||||
+static bool IsInDlsymAllocPool(const void *ptr) {
|
||||
+ uptr off = (uptr)ptr - (uptr)alloc_memory_for_dlsym;
|
||||
+ return off < sizeof(alloc_memory_for_dlsym);
|
||||
+}
|
||||
+
|
||||
+static void *AllocateFromLocalPool(uptr size_in_bytes) {
|
||||
+ uptr size_in_words = RoundUpTo(size_in_bytes, kWordSize) / kWordSize;
|
||||
+ void *mem = (void *)&alloc_memory_for_dlsym[allocated_for_dlsym];
|
||||
+ allocated_for_dlsym += size_in_words;
|
||||
+ CHECK_LT(allocated_for_dlsym, kDlsymAllocPoolSize);
|
||||
+ return mem;
|
||||
+}
|
||||
+
|
||||
#define ENSURE_MSAN_INITED() do { \
|
||||
CHECK(!msan_init_is_running); \
|
||||
if (!msan_inited) { \
|
||||
@@ -227,7 +244,7 @@
|
||||
|
||||
INTERCEPTOR(void, free, void *ptr) {
|
||||
GET_MALLOC_STACK_TRACE;
|
||||
- if (!ptr) return;
|
||||
+ if (!ptr || UNLIKELY(IsInDlsymAllocPool(ptr))) return;
|
||||
MsanDeallocate(&stack, ptr);
|
||||
}
|
||||
|
||||
@@ -234,7 +251,7 @@
|
||||
#if !SANITIZER_FREEBSD
|
||||
INTERCEPTOR(void, cfree, void *ptr) {
|
||||
GET_MALLOC_STACK_TRACE;
|
||||
- if (!ptr) return;
|
||||
+ if (!ptr || UNLIKELY(IsInDlsymAllocPool(ptr))) return;
|
||||
MsanDeallocate(&stack, ptr);
|
||||
}
|
||||
#define MSAN_MAYBE_INTERCEPT_CFREE INTERCEPT_FUNCTION(cfree)
|
||||
@@ -907,27 +924,29 @@
|
||||
|
||||
INTERCEPTOR(void *, calloc, SIZE_T nmemb, SIZE_T size) {
|
||||
GET_MALLOC_STACK_TRACE;
|
||||
- if (UNLIKELY(!msan_inited)) {
|
||||
+ if (UNLIKELY(!msan_inited))
|
||||
// Hack: dlsym calls calloc before REAL(calloc) is retrieved from dlsym.
|
||||
- const SIZE_T kCallocPoolSize = 1024;
|
||||
- static uptr calloc_memory_for_dlsym[kCallocPoolSize];
|
||||
- static SIZE_T allocated;
|
||||
- SIZE_T size_in_words = ((nmemb * size) + kWordSize - 1) / kWordSize;
|
||||
- void *mem = (void*)&calloc_memory_for_dlsym[allocated];
|
||||
- allocated += size_in_words;
|
||||
- CHECK(allocated < kCallocPoolSize);
|
||||
- return mem;
|
||||
- }
|
||||
+ return AllocateFromLocalPool(nmemb * size);
|
||||
return MsanCalloc(&stack, nmemb, size);
|
||||
}
|
||||
|
||||
INTERCEPTOR(void *, realloc, void *ptr, SIZE_T size) {
|
||||
GET_MALLOC_STACK_TRACE;
|
||||
+ if (UNLIKELY(IsInDlsymAllocPool(ptr))) {
|
||||
+ uptr offset = (uptr)ptr - (uptr)alloc_memory_for_dlsym;
|
||||
+ uptr copy_size = Min(size, kDlsymAllocPoolSize - offset);
|
||||
+ void *new_ptr = AllocateFromLocalPool(size);
|
||||
+ internal_memcpy(new_ptr, ptr, copy_size);
|
||||
+ return new_ptr;
|
||||
+ }
|
||||
return MsanReallocate(&stack, ptr, size, sizeof(u64), false);
|
||||
}
|
||||
|
||||
INTERCEPTOR(void *, malloc, SIZE_T size) {
|
||||
GET_MALLOC_STACK_TRACE;
|
||||
+ if (UNLIKELY(!msan_inited))
|
||||
+ // Hack: dlsym calls malloc before REAL(malloc) is retrieved from dlsym.
|
||||
+ return AllocateFromLocalPool(size);
|
||||
return MsanReallocate(&stack, nullptr, size, sizeof(u64), false);
|
||||
}
|
||||
|
||||
Index: lib/asan/asan_malloc_linux.cc
|
||||
===================================================================
|
||||
--- lib/asan/asan_malloc_linux.cc (revision 282231)
|
||||
+++ lib/asan/asan_malloc_linux.cc (revision 282232)
|
||||
@@ -78,7 +78,11 @@
|
||||
if (UNLIKELY(IsInDlsymAllocPool(ptr))) {
|
||||
uptr offset = (uptr)ptr - (uptr)alloc_memory_for_dlsym;
|
||||
uptr copy_size = Min(size, kDlsymAllocPoolSize - offset);
|
||||
- void *new_ptr = asan_malloc(size, &stack);
|
||||
+ void *new_ptr;
|
||||
+ if (UNLIKELY(!asan_inited))
|
||||
+ new_ptr = AllocateFromLocalPool(size);
|
||||
+ else
|
||||
+ new_ptr = asan_malloc(size, &stack);
|
||||
internal_memcpy(new_ptr, ptr, copy_size);
|
||||
return new_ptr;
|
||||
}
|
||||
@@ -16,6 +16,10 @@
|
||||
<Archive sha1sum="f24e5ceb226a72e781cefde4e30f2d7be09ea305" type="binary">http://releases.llvm.org/3.9.1/clang-tools-extra-3.9.1.src.tar.xz</Archive>
|
||||
<Archive sha1sum="f6da59c9ed570c4c7091c25f0abe59aba0e29de3" type="binary">http://releases.llvm.org/3.9.1/lldb-3.9.1.src.tar.xz</Archive>
|
||||
<Archive sha1sum="938921d076e28943f5d5b653514f2ce36a88a55e" type="binary">http://releases.llvm.org/3.9.1/compiler-rt-3.9.1.src.tar.xz</Archive>
|
||||
<AdditionalFiles>
|
||||
<AdditionalFile target="msan-prevent-initialization-failure-with-newer-glibc.patch">msan-prevent-initialization-failure-with-newer-glibc.patch</AdditionalFile>
|
||||
<AdditionalFile target="AMDGPU-Fix-an-interaction-between-WQM-and-polygon-stippling.patch">AMDGPU-Fix-an-interaction-between-WQM-and-polygon-stippling.patch</AdditionalFile>
|
||||
</AdditionalFiles>
|
||||
<BuildDependencies>
|
||||
<Dependency>zlib-devel</Dependency>
|
||||
<Dependency>libxml2-devel</Dependency>
|
||||
@@ -201,7 +205,7 @@
|
||||
|
||||
<History>
|
||||
<Update release="4">
|
||||
<Date>2017-02-02</Date>
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>3.9.1</Version>
|
||||
<Comment>Version Bump</Comment>
|
||||
<Name>Pisi Linux Community</Name>
|
||||
|
||||
@@ -58,6 +58,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.6.2</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>1.6.2</Version>
|
||||
|
||||
@@ -68,6 +68,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>1.0.3</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>1.0.3</Version>
|
||||
|
||||
@@ -43,6 +43,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.9.3</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>0.9.3</Version>
|
||||
|
||||
@@ -32,7 +32,6 @@ def setup():
|
||||
--enable-gles2 \
|
||||
--enable-vdpau \
|
||||
--enable-osmesa \
|
||||
--enable-sysfs \
|
||||
--enable-xvmc \
|
||||
--enable-glx-tls \
|
||||
--enable-gallium-llvm \
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.c b/src/gallium/drivers/nouveau/nouveau_buffer.c
|
||||
index 58fa453..a006e9f 100644
|
||||
--- a/src/gallium/drivers/nouveau/nouveau_buffer.c
|
||||
+++ b/src/gallium/drivers/nouveau/nouveau_buffer.c
|
||||
@@ -80,6 +80,8 @@ release_allocation(struct nouveau_mm_allocation **mm,
|
||||
inline void
|
||||
nouveau_buffer_release_gpu_storage(struct nv04_resource *buf)
|
||||
{
|
||||
+ if (buf->fence)
|
||||
+ pipe_mutex_lock(buf->fence->screen->push_mutex);
|
||||
if (buf->fence && buf->fence->state < NOUVEAU_FENCE_STATE_FLUSHED) {
|
||||
nouveau_fence_work(buf->fence, nouveau_fence_unref_bo, buf->bo);
|
||||
buf->bo = NULL;
|
||||
@@ -89,6 +91,8 @@ nouveau_buffer_release_gpu_storage(struct nv04_resource *buf)
|
||||
|
||||
if (buf->mm)
|
||||
release_allocation(&buf->mm, buf->fence);
|
||||
+ if (buf->fence)
|
||||
+ pipe_mutex_unlock(buf->fence->screen->push_mutex);
|
||||
|
||||
if (buf->domain == NOUVEAU_BO_VRAM)
|
||||
NOUVEAU_DRV_STAT_RES(buf, buf_obj_current_bytes_vid, -(uint64_t)buf->base.width0);
|
||||
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
|
||||
index 7450119..38e4faf 100644
|
||||
--- a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
|
||||
+++ b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
|
||||
@@ -163,10 +163,13 @@ nv50_miptree_destroy(struct pipe_screen *pscreen, struct pipe_resource *pt)
|
||||
{
|
||||
struct nv50_miptree *mt = nv50_miptree(pt);
|
||||
|
||||
- if (mt->base.fence && mt->base.fence->state < NOUVEAU_FENCE_STATE_FLUSHED)
|
||||
+ if (mt->base.fence && mt->base.fence->state < NOUVEAU_FENCE_STATE_FLUSHED) {
|
||||
+ pipe_mutex_lock(nouveau_screen(pscreen)->push_mutex);
|
||||
nouveau_fence_work(mt->base.fence, nouveau_fence_unref_bo, mt->base.bo);
|
||||
- else
|
||||
+ pipe_mutex_unlock(nouveau_screen(pscreen)->push_mutex);
|
||||
+ } else {
|
||||
nouveau_bo_ref(NULL, &mt->base.bo);
|
||||
+ }
|
||||
|
||||
nouveau_fence_ref(NULL, &mt->base.fence);
|
||||
nouveau_fence_ref(NULL, &mt->base.fence_wr);
|
||||
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c b/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c
|
||||
index 9067bcc..d2ad72e 100644
|
||||
--- a/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c
|
||||
+++ b/src/gallium/drivers/nouveau/nv50/nv50_query_hw.c
|
||||
@@ -56,9 +56,12 @@ nv50_hw_query_allocate(struct nv50_context *nv50, struct nv50_query *q,
|
||||
if (hq->mm) {
|
||||
if (hq->state == NV50_HW_QUERY_STATE_READY)
|
||||
nouveau_mm_free(hq->mm);
|
||||
- else
|
||||
+ else {
|
||||
+ pipe_mutex_lock(screen->base.push_mutex);
|
||||
nouveau_fence_work(screen->base.fence.current,
|
||||
nouveau_mm_free_work, hq->mm);
|
||||
+ pipe_mutex_unlock(screen->base.push_mutex);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
if (size) {
|
||||
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c
|
||||
index f2584cb..4b51a67 100644
|
||||
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c
|
||||
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_query_hw.c
|
||||
@@ -48,9 +48,12 @@ nvc0_hw_query_allocate(struct nvc0_context *nvc0, struct nvc0_query *q,
|
||||
if (hq->mm) {
|
||||
if (hq->state == NVC0_HW_QUERY_STATE_READY)
|
||||
nouveau_mm_free(hq->mm);
|
||||
- else
|
||||
+ else {
|
||||
+ pipe_mutex_lock(screen->base.push_mutex);
|
||||
nouveau_fence_work(screen->base.fence.current,
|
||||
nouveau_mm_free_work, hq->mm);
|
||||
+ pipe_mutex_unlock(screen->base.push_mutex);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
if (size) {
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,104 @@
|
||||
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_draw.c b/src/gallium/drivers/nouveau/nv30/nv30_draw.c
|
||||
index 10c9f56..c5761a3 100644
|
||||
--- a/src/gallium/drivers/nouveau/nv30/nv30_draw.c
|
||||
+++ b/src/gallium/drivers/nouveau/nv30/nv30_draw.c
|
||||
@@ -127,6 +127,8 @@ nv30_render_draw_elements(struct vbuf_render *render,
|
||||
struct nouveau_pushbuf *push = nv30->screen->base.pushbuf;
|
||||
unsigned i;
|
||||
|
||||
+ pipe_mutex_lock(nv30->screen->base.push_mutex);
|
||||
+
|
||||
BEGIN_NV04(push, NV30_3D(VTXBUF(0)), r->vertex_info.num_attribs);
|
||||
for (i = 0; i < r->vertex_info.num_attribs; i++) {
|
||||
PUSH_RESRC(push, NV30_3D(VTXBUF(i)), BUFCTX_VTXTMP,
|
||||
@@ -134,8 +136,10 @@ nv30_render_draw_elements(struct vbuf_render *render,
|
||||
NOUVEAU_BO_LOW | NOUVEAU_BO_RD, 0, NV30_3D_VTXBUF_DMA1);
|
||||
}
|
||||
|
||||
- if (!nv30_state_validate(nv30, ~0, false))
|
||||
+ if (!nv30_state_validate(nv30, ~0, false)) {
|
||||
+ pipe_mutex_unlock(nv30->screen->base.push_mutex);
|
||||
return;
|
||||
+ }
|
||||
|
||||
BEGIN_NV04(push, NV30_3D(VERTEX_BEGIN_END), 1);
|
||||
PUSH_DATA (push, r->prim);
|
||||
@@ -160,6 +164,8 @@ nv30_render_draw_elements(struct vbuf_render *render,
|
||||
BEGIN_NV04(push, NV30_3D(VERTEX_BEGIN_END), 1);
|
||||
PUSH_DATA (push, NV30_3D_VERTEX_BEGIN_END_STOP);
|
||||
PUSH_RESET(push, BUFCTX_VTXTMP);
|
||||
+
|
||||
+ pipe_mutex_unlock(nv30->screen->base.push_mutex);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -172,6 +178,8 @@ nv30_render_draw_arrays(struct vbuf_render *render, unsigned start, uint nr)
|
||||
unsigned ps = fn + (pn ? 1 : 0);
|
||||
unsigned i;
|
||||
|
||||
+ pipe_mutex_lock(nv30->screen->base.push_mutex);
|
||||
+
|
||||
BEGIN_NV04(push, NV30_3D(VTXBUF(0)), r->vertex_info.num_attribs);
|
||||
for (i = 0; i < r->vertex_info.num_attribs; i++) {
|
||||
PUSH_RESRC(push, NV30_3D(VTXBUF(i)), BUFCTX_VTXTMP,
|
||||
@@ -179,8 +187,10 @@ nv30_render_draw_arrays(struct vbuf_render *render, unsigned start, uint nr)
|
||||
NOUVEAU_BO_LOW | NOUVEAU_BO_RD, 0, NV30_3D_VTXBUF_DMA1);
|
||||
}
|
||||
|
||||
- if (!nv30_state_validate(nv30, ~0, false))
|
||||
+ if (!nv30_state_validate(nv30, ~0, false)) {
|
||||
+ pipe_mutex_unlock(nv30->screen->base.push_mutex);
|
||||
return;
|
||||
+ }
|
||||
|
||||
BEGIN_NV04(push, NV30_3D(VERTEX_BEGIN_END), 1);
|
||||
PUSH_DATA (push, r->prim);
|
||||
@@ -197,6 +207,8 @@ nv30_render_draw_arrays(struct vbuf_render *render, unsigned start, uint nr)
|
||||
BEGIN_NV04(push, NV30_3D(VERTEX_BEGIN_END), 1);
|
||||
PUSH_DATA (push, NV30_3D_VERTEX_BEGIN_END_STOP);
|
||||
PUSH_RESET(push, BUFCTX_VTXTMP);
|
||||
+
|
||||
+ pipe_mutex_unlock(nv30->screen->base.push_mutex);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -386,6 +398,8 @@ nv30_render_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
|
||||
|
||||
nv30_render_validate(nv30);
|
||||
|
||||
+ pipe_mutex_unlock(nv30->screen->base.push_mutex);
|
||||
+
|
||||
if (nv30->draw_dirty & NV30_NEW_VIEWPORT)
|
||||
draw_set_viewport_states(draw, 0, 1, &nv30->viewport);
|
||||
if (nv30->draw_dirty & NV30_NEW_RASTERIZER)
|
||||
@@ -451,6 +465,8 @@ nv30_render_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
|
||||
if (transfer[i])
|
||||
pipe_buffer_unmap(pipe, transfer[i]);
|
||||
|
||||
+ pipe_mutex_lock(nv30->screen->base.push_mutex);
|
||||
+
|
||||
nv30->draw_dirty = 0;
|
||||
nv30_state_release(nv30);
|
||||
}
|
||||
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c b/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c
|
||||
index 6de61bc..fd21f99 100644
|
||||
--- a/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c
|
||||
+++ b/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c
|
||||
@@ -38,6 +38,8 @@ nv30_fragprog_upload(struct nv30_context *nv30)
|
||||
struct nv30_fragprog *fp = nv30->fragprog.program;
|
||||
struct pipe_context *pipe = &nv30->base.pipe;
|
||||
|
||||
+ pipe_mutex_unlock(nv->screen->push_mutex);
|
||||
+
|
||||
if (unlikely(!fp->buffer))
|
||||
fp->buffer = pipe_buffer_create(pipe->screen, 0, 0, fp->insn_len * 4);
|
||||
|
||||
@@ -60,6 +62,8 @@ nv30_fragprog_upload(struct nv30_context *nv30)
|
||||
|
||||
if (nv04_resource(fp->buffer)->domain != NOUVEAU_BO_VRAM)
|
||||
nouveau_buffer_migrate(nv, nv04_resource(fp->buffer), NOUVEAU_BO_VRAM);
|
||||
+
|
||||
+ pipe_mutex_lock(nv->screen->push_mutex);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -34,11 +34,16 @@
|
||||
<Dependency>eudev-devel</Dependency>
|
||||
<Dependency>nettle-devel</Dependency>
|
||||
<Dependency>python-mako</Dependency>
|
||||
<Dependency versionFrom="3.8.0">llvm</Dependency>
|
||||
<Dependency versionFrom="3.8.0">llvm-libs</Dependency>
|
||||
<Dependency versionFrom="3.8.0">llvm-clang-devel</Dependency>
|
||||
<Dependency versionFrom="3.9.1">llvm</Dependency>
|
||||
<Dependency versionFrom="3.9.1">llvm-libs</Dependency>
|
||||
<Dependency versionFrom="3.9.1">llvm-clang-devel</Dependency>
|
||||
<Dependency versionFrom="1.2">libxshmfence-devel</Dependency>
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- <Patch level="1">2e6b0e24cfb0f467e8b6d6f394730442a72dcdaf.diff</Patch> -->
|
||||
<Patch level="1">2733e5483e1c2b80e4b0ae21187ec5e3e1579397.diff</Patch>
|
||||
<Patch level="1">940b3a773f264f3f52574160f0d06c48f8e8aeb2.diff</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
<Package>
|
||||
@@ -66,9 +71,9 @@
|
||||
<Dependency>libomxil-bellagio</Dependency>
|
||||
<Dependency>nettle</Dependency>
|
||||
<Dependency versionFrom="1.2">libxshmfence</Dependency>
|
||||
<Dependency versionFrom="3.8.0">llvm</Dependency>
|
||||
<Dependency versionFrom="3.8.0">llvm-clang</Dependency>
|
||||
<Dependency versionFrom="3.8.0">llvm-libs</Dependency>
|
||||
<Dependency versionFrom="3.9.1">llvm</Dependency>
|
||||
<Dependency versionFrom="3.9.1">llvm-clang</Dependency>
|
||||
<Dependency versionFrom="3.9.1">llvm-libs</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="config">/etc</Path>
|
||||
@@ -135,7 +140,7 @@
|
||||
<Dependency>libdrm-nouveau-32bit</Dependency>
|
||||
<Dependency>libxshmfence-32bit</Dependency>
|
||||
<Dependency>nettle-32bit</Dependency>
|
||||
<Dependency versionFrom="3.8.0">llvm-32bit</Dependency>
|
||||
<Dependency versionFrom="3.9.1">llvm-32bit</Dependency>
|
||||
</BuildDependencies>
|
||||
<RuntimeDependencies>
|
||||
<Dependency>elfutils-32bit</Dependency>
|
||||
@@ -160,7 +165,7 @@
|
||||
<Dependency>libdrm-nouveau-32bit</Dependency>
|
||||
<Dependency>wayland-32bit</Dependency>
|
||||
<Dependency release="current">mesa</Dependency>
|
||||
<Dependency versionFrom="3.8.0">llvm-32bit</Dependency>
|
||||
<Dependency versionFrom="3.9.1">llvm-32bit</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
<Path fileType="library">/usr/lib32</Path>
|
||||
@@ -171,6 +176,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="5">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>13.0.4</Version>
|
||||
<Comment>llvm update</Comment>
|
||||
<Name>Alihan Öztürk</Name>
|
||||
<Email>alihan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="4">
|
||||
<Date>2017-02-02</Date>
|
||||
<Version>13.0.4</Version>
|
||||
|
||||
@@ -54,6 +54,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.34.0</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>Alihan Öztürk</Name>
|
||||
<Email>alihan@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-05-02</Date>
|
||||
<Version>0.34.0</Version>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<IsA>library</IsA>
|
||||
<Summary>XCB cursor library</Summary>
|
||||
<Description>The xcb-util-image module provides a number of libraries which sit on top of libxcb, the core X protocol library, and some of the extension libraries.</Description>
|
||||
<Archive sha1sum="b55a92cd96c3ec1be9a26963df6d5f16e68fffea" type="tarbz2">http://xcb.freedesktop.org/dist/xcb-util-cursor-0.1.2.tar.bz2</Archive>
|
||||
<Archive sha1sum="26562eb6d4151307f7b6a53453d360ecfc0563ac" type="tarbz2">https://xcb.freedesktop.org/dist/xcb-util-cursor-0.1.3.tar.bz2</Archive>
|
||||
<BuildDependencies>
|
||||
<Dependency>util-macros</Dependency>
|
||||
<Dependency>libxcb-devel</Dependency>
|
||||
@@ -55,12 +55,10 @@
|
||||
<BuildType>emul32</BuildType>
|
||||
<BuildDependencies>
|
||||
<Dependency>libxcb-32bit</Dependency>
|
||||
|
||||
<Dependency>xcb-util-image-32bit</Dependency>
|
||||
<Dependency>xcb-util-renderutil-32bit</Dependency>
|
||||
</BuildDependencies>
|
||||
<RuntimeDependencies>
|
||||
|
||||
<Dependency>libxcb-32bit</Dependency>
|
||||
<Dependency>xcb-util-image-32bit</Dependency>
|
||||
<Dependency>xcb-util-renderutil-32bit</Dependency>
|
||||
@@ -71,6 +69,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.1.3</Version>
|
||||
<Comment>Version bump</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>0.1.2</Version>
|
||||
|
||||
@@ -54,10 +54,8 @@
|
||||
<BuildDependencies>
|
||||
<Dependency>libxcb-32bit</Dependency>
|
||||
<Dependency>xcb-util-32bit</Dependency>
|
||||
|
||||
</BuildDependencies>
|
||||
<RuntimeDependencies>
|
||||
|
||||
<Dependency>xcb-util-32bit</Dependency>
|
||||
<Dependency>libxcb-32bit</Dependency>
|
||||
</RuntimeDependencies>
|
||||
@@ -67,6 +65,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.4.0</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>0.4.0</Version>
|
||||
|
||||
@@ -64,6 +64,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.4.0</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>0.4.0</Version>
|
||||
|
||||
@@ -49,11 +49,9 @@
|
||||
<Summary>32-bit shared libraries for xcb-util-renderutil</Summary>
|
||||
<BuildType>emul32</BuildType>
|
||||
<BuildDependencies>
|
||||
|
||||
<Dependency>libxcb-32bit</Dependency>
|
||||
</BuildDependencies>
|
||||
<RuntimeDependencies>
|
||||
|
||||
<Dependency>libxcb-32bit</Dependency>
|
||||
</RuntimeDependencies>
|
||||
<Files>
|
||||
@@ -62,6 +60,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.3.9</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>0.3.9</Version>
|
||||
|
||||
@@ -63,6 +63,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.4.1</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>0.4.1</Version>
|
||||
|
||||
@@ -64,6 +64,13 @@
|
||||
</Package>
|
||||
|
||||
<History>
|
||||
<Update release="3">
|
||||
<Date>2017-02-05</Date>
|
||||
<Version>0.4.0</Version>
|
||||
<Comment>Rebuild</Comment>
|
||||
<Name>PisiLinux Community</Name>
|
||||
<Email>admin@pisilinux.org</Email>
|
||||
</Update>
|
||||
<Update release="2">
|
||||
<Date>2016-04-30</Date>
|
||||
<Version>0.4.0</Version>
|
||||
|
||||
Reference in New Issue
Block a user