ChangeLog
v1.16 2019/09/17
(2019/09/16) PS1 - portability: use AC_USE_SYSTEM_EXTENSIONS
instead of individual feature test macros.
(2019/09/16) PS1 - automake: handle conditional sources better.
(2019/05/16) PS1 - normalize rotation angle
(2019/02/26) PS1 - portability: use binary file i/o in OS/2,
suggested by Dave Yeo.
(2018/07/27) PS1 - autoconf: renamed --enable-local-getopt as
--with-included-getopt.
(2018/07/26) PS1 - test suite: adjusted tolerances.
(2017/08/06) PS1 - fixed a potential arithmetic overflow. Fixes
bugs #23 and #24 reported by Henri Salo.
v1.15 2017/08/05
(2017/08/05) PS1 - use round() instead of rint()
(2017/08/05) PS1 - portability: set both _POSIX_C_SOURCE and
_NETBSD_SOURCE to enable strdup prototype in string.h, as
_XOPEN_SOURCE=500 doesn't work on macOS, _XOPEN_SOURCE=600 doesn't
work on SunOS, and _POSIX_C_SOURCE alone doesn't work on Minix.
(2017/08/02) PS1 - fixed a potential arithmetic overflow.
(2017/06/17) PS1 - fixed a bug with very large bitmaps. Reported
by Michael Voříšek.
(2017/03/05) PS1 - autoconf: added --enable-local-getopt to avoid
using the system-wide getopt library (it may still end up being
used on GNU systems).
(2017/03/05) PS1 - portability: moved getopt.h to a subdirectory,
to be included only when needed. Reported by Daniel Macks.
(2017/03/05) PS1 - portability: use _XOPEN_SOURCE=600 to fix macOS
warning.
(2017/02/27) PS1 - fixed more buffer overflows (not security
critical), including one reported by Agostino Sarubbo. This also
fixes CVE-2017-12067.
v1.14 2017/02/19
(2017/02/19) PS1 - speed: use clang as default compiler if
available, and no longer use -ffloat-store even with gcc.
(2017/02/18) PS1 - corrected some exit codes, added some missing
error handlers.
(2017/02/17) PS1 - mkbitmap: bugfixes and improvements in parsing
image files.
(2017/02/15) PS1 - truncate the image size when bitmap data ends
prematurely. This fixes CVE-2016-8686, where Potrace appeared to
be "hanging" on a crafted input file.
(2017/02/14) PS1 - test suite: added tests for plain pnm files.
(2017/01/08) PS1 - fixed potential compiler issues due to signed
arithmetic overflow and arithmetic shifting.
(2017/01/07) PS1 - enable use of negative dy in bitmap data.
(2017/01/07) PS1 - test suite: moved data files to a subdirectory.
(2017/01/07) PS1 - test suite: added a check for -i flag.
(2017/01/07) PS1 - fixed buffer overflow CVE-2016-8685, reported
by Agostino Sarubbo.
(2015/10/24) PS1 - portability: use const char * for string
constants, required by C++11. Reported by Martin Gieseking.
(2015/10/24) PS1 - portability: extra spaces around string macros,
required by C++11. Reported by Martin Gieseking.
(2015/10/24) PS1 - portability: added more potential C compilers
to autoconf. Suggested by Nelson Beebe.
v1.13 2015/10/22
(2015/07/18) PS1 - fixed heap overflows, null pointer dereference
bugs and a memory leak. Reported by Agostino Sarubbo.
(2015/05/17) PS1 - man page: show which backends are dimension
based, and state more clearly that svg backend defaults to 72dpi.
(2015/04/11) PS1 - portability: ssize_t not supported on some
systems; use ptrdiff_t instead. Reported by Martin Gieseking.
(2015/03/28) PS1 - portability: added missing #includes for c99,
reported by Nelson Beebe.
(2015/03/27) PS1 - include config.h before other header files,
reported by Peter Breitenlohner.
(2015/03/26) PS1 - fixed division by zero bug triggered by bitmap
of dimension 1x0. Reported by Tomasz Buchert.
v1.12 2015/03/24
(2015/03/20) PS1 - fixed memory overflow bug triggered by very
large bitmaps. Fixes RedHat bug #955808 reported by Vincent Danen
and Debian bug #778646 reported by Moritz Muehlenhoff.
(2014/09/06) PS1 - test suite: added binary-check, to check that
files are written in binary mode. Mostly relevant on Windows.
(2014/09/06) PS1 - portability: fixed potential binary file mode
bug on MinGW64.
(2014/03/30) PS1 - man pages: fixed leading blank page with
groff -man -Tps.
(2013/12/29) PS1 - portability: made regular expressions in test
suite POSIX compliant, reported by Ben Bullock.
(2013/05/14) PS1 - distribution: removed libtool from distribution.
v1.11 2013/02/19
(2013/02/10) PS1 - bitops.c: added "cc" as a clobbered register.
(2012/09/13) PS1 - GeoJSON backend: -u option affects rounding,
not scaling.
(2012/09/12) CH1 - added GeoJSON backend.
(2012/03/04) PS1 - minor change in behavior of alphamax parameter:
make a corner if alpha >= alphamax (instead of >). This makes
little practical difference, except when alphamax = 0, in which
case we now get a polygon. Fixes bug #3495854, reported by
scribbleink.
(2012/02/24) PS1 - added support for BMP format with bitfields.
v1.10 2011/08/19
(2011/08/07) PS1 - added --tight option
(2011/08/05) PS1 - backends: simplified dimension calculations
(2011/08/05) PS1 - eps backend: prevent integer overflow in
bounding box.
(2011/08/05) PS1 - disallow resolution of 0 dpi.
(2011/08/05) PS1 - man page: added BACKEND TYPES section
(2011/08/05) PS1 - fixed default scaling at 72dpi for
variable-sized backends
(2011/08/02) PS1 - new gimppath backend produces SVG output
suitable for current versions of Gimp.
(2011/08/02) PS1 - added a --flat option for the SVG backend.
(2011/07/31) PS1 - test suite: renamed *.out files to prevent
make's built-in implicit rules from accidentally overwriting them.
(2011/07/26) PS1 - added DXF backend. Thanks to Jonas Benedett
Dorr for testing.
(2011/07/26) PS1 - use high resolution bounding box in EPS, PDF,
and SVG backends
(2011/05/13) PS1 - autoconf: CADD can now be given at compile time
v1.9 2010/12/21
(2010/12/20) PS1 - getopt.h: fixed compiler warnings
(2010/12/20) PS1 - added --tty option to specify progress bar
rendering at runtime.
(2010/12/20) PS1 - added simplified progress bar for Windows or
other dumb terminals. New --enable-dumb-tty configuration option.
(2010/12/16) PS1 - test suite: fixed bug where a failed test was
not reported in backend-check.sh
(2010/12/15) PS1 - test suite: support for $EXEEXT
(2010/12/15) PS1 - optimized penalty3 inner loop, 4.6% speedup.
(2010/12/15) PS1 - autoconf: new CADD variable to add to CFLAGS
(2010/12/15) PS1 - fixed some compiler warnings, added some error
handlers, and added some cosmetic top-level free's.
(2010/11/25) PS1 - added support for some BMP version 4 and 5
files, and for top-down BMP files. Suggested by Kanwar Sangwan.
(2010/11/13) PS1 - don't enter filter mode if -- is used
(2010/11/09) PS1 - greymap.h, bitmap.h: drop unneeded dependencies
(2010/09/07) PS1 - autoconf: fixed getopt_long test to allow
cross-compiling, bug #3061403, reported by Igor Filippov.
(2010/08/31) PS1 - test suite: added environment variables
CHECK_POTRACE and CHECK_MKBITMAP to allow binaries outside the
build tree to be tested
(2010/08/09) PS1 - autoconf: converted to libtool
(2010/08/05) PS1 - autoconf: renamed configure.in as configure.ac
(2010/08/05) PS1 - autoconf: added --with-libpotrace to optionally
install the Potrace library and header files.
(2009/08/03) PS1 - portability: c++ wrapper in potracelib.h,
suggested by Peter Jankuliak.
(2009/05/13) PS1 - added pdfpage backend for fixed pagesize PDF
output.
(2009/04/07) PS1 - decompose.c: minor optimization
(2008/10/08) PS1 - mkbitmap: speed increase by 8% to 26% by
eliminating unnecessary bounds checks and interpolation.
(2008/10/05) PS1 - trace.c: separate function for path reversal
(2008/10/03) PS1 - progress.h: do the right thing if progress ==
NULL
(2008/10/03) PS1 - moved detrand() to auxiliary.h
(2008/08/21) PS1 - mkbitmap: added --blur option.
(2008/08/12) PS1 - combined the old -V option with -v.
(2008/08/12) PS1 - test suite: adjusted tolerances to fix bug
#1745456
(2007/12/31) PS1 - include curve.h where path_t is used
(2007/12/28) PS1 - flush stderr when interleaved with stdout
(2007/12/28) PS1 - portability: don't hardcode size of short int
(2007/11/09) PS1 - eps backend: use save-restore to avoid
polluting caller's dictionary and for page independence.
(2007/05/22) PS1 - xfig backend: added depth to opaque components
to avoid them floating to the background. Suggested by Rafael
Laboissiere.
v1.8 2007/04/09
(2007/04/08) PS1 - portability: use 'test' instead of '[' in shell
scripts.
(2007/04/08) PS1 - test suite: run PDF checks as a separate test.
(2007/04/06) PS1 - fixed logical expressions in flate.c
(2007/02/19) PS1 - portability: replacements for inline and M_PI
(2007/01/16) PS1 - test suite: added checks for rotation in
PostScript, PDF, and PGM backends
(2007/01/16) PS1 - pdf backend: added rotation
(2007/01/16) PS1 - pdf backend: renamed shipcom() function
(2007/01/14) PS1 - autoconf: check if getopt_long reorders its
arguments.
(2007/01/13) PS1 - made pseudo-random number generation
thread-safe and much faster.
(2006/12/20) PS1 - renamed some structures in lzw.c, main.h
(2006/12/20) PS1 - portability: fixed some compiler issues for
Amiga, reported by Andreas Kleinert.
(2006/12/20) PS1 - main.c: changed some return types to void.
(2006/08/14) PS1 - made curve.c:privcurve_free_members() static.
(2005/12/22) PS1 - renamed README.win as README-WIN
(2005/11/11) PS1 - portability: use binary file i/o in Cygwin.
Suggested by Henry He.
(2005/06/24) PS1 - potracelib: fixed allocation bug, reported by
Jung Shin.
(2005/06/23) PS1 - potracelib_demo.c: free resources properly.
(2005/06/23) PS1 - initialize unused private state to 0.
(2005/06/23) PS1 - decompose.c: improved memory allocation scheme.
(2005/05/06) PS1 - added "alphacurve" field to private curve
structure, so that backends that don't use the public interface
(such as the EPS backend) can be warned of non-conforming curves.
v1.7 2005/03/06
(2005/03/05) PS1 - fixed progress bar subrange bug.
v1.6 2005/02/27
(2005/02/22) PS1 - added "epsilon" feature to progress bar.
(2005/02/22) PS1 - documentation: changed potracelib documentation
to TeX format.
(2005/02/07) PS1 - tweaked progress bar
(2005/01/24) PS1 - added --progress option to potrace frontend.
(2005/01/24) PS1 - potracelib: added progress bar interface.
(2005/01/23) PS1 - fixed overflow bug in fast summing code.
(2005/01/23) PS1 - rewrote trace.c:bestpolygon(). This speeds up
potrace by 20% on typical data and up to 60% in some bad cases.
(2004/12/07) PS1 - documentation: added potracelib.txt
(2004/12/07) PS1 - renamed aux.h as auxiliary.h, since aux is an
invalid filename in Windows.
(2004/12/06) PS1 - API: added default parameters
(2004/12/06) PS1 - API: added potrace_state_t
(2004/12/06) PS1 - API: added "const" qualifiers
(2004/12/06) PS1 - removed conv and areac fields from privpath_t.
(2004/12/06) PS1 - changed bounding box handling in decompose.c
(2004/12/06) PS1 - split curve_t into public and private parts.
(2004/12/06) PS1 - moved curve/path allocation to curve.c.
(2004/12/06) PS1 - renamed a type in lzw.h.
(2004/12/06) PS1 - renamed source files.
(2004/12/04) PS1 - split path_t into public and private parts.
(2004/12/03) PS1 - split core functionality from user interface.
(2004/12/03) PS1 - moved parts of bitmap.h to potracelib.h. Split
bitmap.c into bitmap.c and bitmap_io.c. Moved path decomposition
auxiliary functions from bitmap.c to path.c.
(2004/12/03) PS1 - converted some stray local functions to static
(2004/12/01) PS1 - moved basic curve data type definitions to
potracelib.h
(2004/12/01) PS1 - collected some repeatedly used macros in aux.h
(2004/12/01) PS1 - started to create API to potrace core
functionality in potracelib.c and potracelib.h. Also added new
libpotrace.a target.
(2004/12/01) PS1 - made curve.c and path.c reentrant by removing
global variable "info".
(2004/11/28) PS1 - made a85* auxiliary functions static in
flate.c.
(2004/11/28) PS1 - pdf backend: removed arbitrary page limit.
(2004/11/24) PS1 - pdf backend: replaced ftell() by explicit byte
count to work correctly with stdout.
(2004/11/24) PS1 - portability: use binary file i/o in MinGW.
(2004/10/08) PS1 - minor cleanup in backend_pdf.c.
(2004/09/21) PS1 - replace -O3 compilation default by -O2; inlined
critical functions manually instead.
(2004/09/18) PS1 - slightly optimized multiplications in
curve.c:bezier(). Thanks to Thomas M.Ott for suggesting it.
(2004/09/16) PS1 - list of backends in help message is now
generated.
(2004/09/16) PS1 - test suite: added test for pdf backend.
(2004/09/14) PS1 - removed bits.c, renamed bits.h to bitops.h, and
use static inline functions instead of macros.
(2004/09/14) PS1 - test suite: adjusted tolerances.
(2004/09/12) PS1 - mkbitmap: when reading plain pbm files, use
colors 0 and 255, not 0 and 1.
(2004/09/12) PS1 - potrace and mkbitmap: don't complain about
"junk at the end of file" if the junk is whitespace and
comments. Treat files which contain only whitespace and comments
as empty.
(2004/08/05) TA1 - added pdf backend.
v1.5 2004/07/08
(2004/07/08) PS1 - removed dependency on external "compress"
program. Removed ztops.c, added lzw.c, bits.c.
(2004/03/17) PS1 - don't leave temporary file /tmp/have_compress.*
lying around.
(2004/03/06) PS1 - fixed a type error in have_compress.c:28.
v1.4 2004/03/06
(2004/03/05) PS1 - removed the compile-time check for the
"compress" program and replaced it by a run-time check.
(2004/03/03) PS1 - ztops.c: fixed compression bug where garbage
was added after the end of stream.
(2004/02/09) PS1 - further optimized the speed of the function
path.c:pathlist_to_tree, which now takes less than 0.1% of total
running time.
(2004/02/09) PS1 - distribution: removed potrace.{ps,pdf} from
distribution, changed textfiles to DOS mode in Cygwin distribution
(2004/01/19) PS1 - corrected a bug in 1.2 which caused an enormous
slowdown in the function path.c:pathlist_to_tree.
(2004/01/17) PS1 - test suite: better quoting in shell scripts to
be more robust against spaces in filenames etc.
(2004/01/17) PS1 - test suite and ztops.c: respect TEMPDIR
environment variable, if set.
v1.3 2004/01/15
(2004/01/14) PS1 - test suite: adjusted tolerances.
(2004/01/13) PS1 - when reading a bitmap of width or height 0,
pretend the offending dimension is 1. This is not 100% logical
in all cases, but better than producing garbage.
(2004/01/13) PS1 - fixed bounding box in xfig backend.
(2004/01/13) PS1 - added missing gsave/grestore to ps backend.
(2004/01/07) PS1 - autoconf: search for zlib.h in
${prefix}/include and for libz.so in ${prefix}/lib, in case they
are not found elsewhere.
(2004/01/07) PS1 - eliminated some unused variables.
(2004/01/07) PS1 - portability: eliminated typeof() from
mkbitmap.c
(2004/01/07) PS1 - test suite: added a test for empty bitmaps.
(2003/12/25) PS1 - fixed bug #866223: potrace crashes when applied
to an empty bitmap.
(2003/12/25) PS1 - when options -2 or -3 are unsupported, ignore
them rather than failing, for improved compatibility.
(2003/12/25) PS1 - autoconf: added --disable-zlib configuration
option and improved error messages for missing zlib.h or libz.so
(2003/12/25) PS1 - portability: eliminated dynamic arrays in
mkbitmap.c
(2003/12/25) PS1 - test suite: added a check for mkbitmap.
(2003/12/25) PS1 - test suite: more portable filesize checking in
backend-check.sh
v1.2 2003/12/23
(2003/12/23) PS1 - added an xfig backend.
(2003/12/23) PS1 - added --group option to group related shapes
together in SVG backend.
(2003/12/23) PS1 - added --opaque option to paint white shapes
opaquely, instead of leaving them transparent, in PS/EPS and SVG
backends.
(2003/12/23) PS1 - rewrote path decomposition algorithm to
calculate path containment tree, to be used for grouping.
(2003/12/23) PS1 - test suite: added a check of postscript output
using ghostscript.
(2003/09/18) PS1 - autoconf: added tests for -lm and -lz
libraries, and for zlib.h header file.
(2003/09/18) PS1 - portability: cleaned up code so that it can be
compiled with a C++ compiler.
(2003/09/17) PS1 - code cleanup in main.c:main().
(2003/09/17) PS1 - added mkbitmap program.
(2003/09/17) PS1 - added -ffloat-store compiler flag for improved
floating point predictability.
(2003/09/12) PS1 - test suite: added test for BMP runlength
encoding.
(2003/09/12) PS1 - fixed frontend for BMP runlength encoding.
(2003/09/11) PS1 - autoconf: added test to work around gcc
compiler bug 12243, which affected curve.c:adjust_vertices().
(2003/09/11) PS1 - renamed pbm.c as bitmap.c, pgm.c as greymap.c
(2003/09/11) PS1 - moved some bitmap details from path.c to pbm.c
(2003/09/10) PS1 - renamed pbm.h macros to start with BM_
(2003/09/02) PS1 - portability: added missing fallback value for
M_PI to backend_pgm.c.
(2003/08/28) PS1 - specialized matrix solving code for n=2.
(2003/08/28) PS1 - portability (and scalability): eliminated
dynamic arrays.
(2003/08/28) PS1 - portability: replaced vsnprintf by vsprintf.
(2003/08/28) PS1 - portability: provided fallback value for M_PI
(2003/08/27) PS1 - autoconf: now checks whether the compress
program works, not just whether it exists.
(2003/08/27) PS1 - test suite: wrote three tests for "make check"
(2003/08/27) PS1 - portability: fixed some floating point errors
on DEC Alpha: division by zero and log of zero.
(2003/08/27) PS1 - changed bitmap representation to take advantage
of 64-bit architectures.
(2003/08/27) PS1 - changed default scaling in ps and eps modes for
small page sizes.
(2003/08/26) PS1 - allow arguments of command line options -b, -z,
-P to be abbreviated by "unambiguous prefix".
(2003/08/26) PS1 - added rotation to gimppath backend.
(2003/08/24) PS1 - portability: removed GNU extensions from printf
format strings in backend_eps.
(2003/08/22) PS1 - converted --unit to double value.
(2003/08/22) PS1 - added experimental gimppath backend.
(2003/08/20) PS1 - close paths in postscript/eps backend.
(2003/08/20) PS1 - fixed bug in parsing command line options: long
options --cleartext, --level2, --level3 did not work properly.
Thanks to George Williams for reporting this bug.
v1.1 2003/08/18
(2003/08/17) PS1 - replaced calc_lon algorithm by a faster
implementation. This results in speedups of up to factor 3.3 for
certain large input files.
(2003/08/17) PS1 - added --invert option.
(2003/08/17) PS1 - improved error messages on wrong file format.
(2003/08/17) PS1 - code cleanup to build under fussier compilers.
Thanks to Nelson Beebe for submitting compiler logs for a large
number of setups.
(2003/08/17) PS1 - renamed curve.c:quad as quadform to avoid name
clash on IBM AIX, Compaq/DEC ODF/1.
(2003/08/17) PS1 - autoconf: let user override CFLAGS at configure
time, and use -Wall and -O3 only for gcc compiler
(2003/08/16) PS1 - added --blacklevel option to control
image-to-bitmap conversion
(2003/08/16) PS1 - added ability to read BMP files. Changed error
reporting in case of empty files, or if there is junk at the end
of a file in multipage mode.
(2003/08/14) PS1 - as a convenience, now also read files in PGM
and PPM format and convert to bitmap by simple threshold method.
This is because many programs, including the Gimp and the *topnm
tools, produce PNM output which must be further converted to PBM.
(2003/08/14) PS1 - rearranged order of options in usage message.
(2003/08/14) PS1 - implemented -d1 option for SVG backend. This
outputs a jaggy bitmap with no smoothing.
(2003/08/14) PS1 - autoconf: improved handling of
--enable-compress
(2003/08/14) PS1 - added SVG backend.
(2003/08/14) PS1 - renamed old -s option as -S
(2003/08/12) PS1 - added README.win
(2003/08/12) PS1 - autoconf: fixed bug #787182: added non-standard
compile time options to help message for ./configure script
v1.0 2003/08/10
(2003/08/10) PS1 - added file i/o code
(2003/08/08) PS1 - optimized number of times the penalty3 function
is called. Speedups of factor 2.7 were observed on large files.
(2003/08/08) PS1 - added --opttolerance and --alphamax options.
(2003/08/07) PS1 - autoconf: changed configure.in so that test for
compress is omitted when the user overrides it - this prevents a
wrong cached value to be read.
(2003/08/07) PS1 - keep output flushed in postscript mode
(2003/08/07) PS1 - fixed memory leak in multiple page mode
(2003/08/06) PS1 - replaced --opticurve by --longcurve option;
opticurve is now the default
(2003/08/06) PS1 - added opticurve sensitivity to pgm backend
(2003/08/06) PS1 - restricted opticurves to be bounded away from
180 degrees
(2003/08/06) PS1 - allow margins and papersize to determine width
if it is not defined by other means in postscript mode
(2003/08/06) PS1 - added ability to read multiple bitmaps in
postscript mode
(2003/08/05) PS1 - new --longcoding option
(2003/08/05) PS1 - new optimized eps backend which works with
opticurve.
(2003/07/31) PS1 - replaced O(n^3) calc_lon algorithm by a new
O(n^2) algorithm. Observed speedups of factor 80.
(2003/07/27) PS1 - added --opticurve option and integrated
opticurve code in curve.c
(2003/06/04) PS1 - made bm_to_pathlist a lot more efficient by
scanning and clearing only bounding box of mask in inner scan.
(2002/11/17) PS1 - changed bm_to_pathlist prototype to use
explicit return value.
(2002/10/09) PS1 - autoconf: added automake/autoconf scripts in
preparation for public distribution.
Generated by dwww version 1.16 on Tue Dec 16 11:18:06 CET 2025.