1ChangeLog 2 3v1.14 2017/02/19 4 (2017/02/19) PS1 - speed: use clang as default compiler if 5 available, and no longer use -ffloat-store even with gcc. 6 (2017/02/18) PS1 - corrected some exit codes, added some missing 7 error handlers. 8 (2017/02/17) PS1 - mkbitmap: bugfixes and improvements in parsing 9 image files. 10 (2017/02/15) PS1 - truncate the image size when bitmap data ends 11 prematurely. This fixes CVE-2016-8686, where Potrace appeared to 12 be "hanging" on a crafted input file. 13 (2017/02/14) PS1 - test suite: added tests for plain pnm files. 14 (2017/01/08) PS1 - fixed potential compiler issues due to signed 15 arithmetic overflow and arithmetic shifting. 16 (2017/01/07) PS1 - enable use of negative dy in bitmap data. 17 (2017/01/07) PS1 - test suite: moved data files to a subdirectory. 18 (2017/01/07) PS1 - test suite: added a check for -i flag. 19 (2017/01/07) PS1 - fixed buffer overflow CVE-2016-8685, reported 20 by Agostino Sarubbo. 21 (2015/10/24) PS1 - portability: use const char * for string 22 constants, required by C++11. Reported by Martin Gieseking. 23 (2015/10/24) PS1 - portability: extra spaces around string macros, 24 required by C++11. Reported by Martin Gieseking. 25 (2015/10/24) PS1 - portability: added more potential C compilers 26 to autoconf. Suggested by Nelson Beebe. 27 28v1.13 2015/10/22 29 (2015/07/18) PS1 - fixed heap overflows, null pointer dereference 30 bugs and a memory leak. Reported by Agostino Sarubbo. 31 (2015/05/17) PS1 - man page: show which backends are dimension 32 based, and state more clearly that svg backend defaults to 72dpi. 33 (2015/04/11) PS1 - portability: ssize_t not supported on some 34 systems; use ptrdiff_t instead. Reported by Martin Gieseking. 35 (2015/03/28) PS1 - portability: added missing #includes for c99, 36 reported by Nelson Beebe. 37 (2015/03/27) PS1 - include config.h before other header files, 38 reported by Peter Breitenlohner. 39 (2015/03/26) PS1 - fixed division by zero bug triggered by bitmap 40 of dimension 1x0. Reported by Tomasz Buchert. 41 42v1.12 2015/03/24 43 (2015/03/20) PS1 - fixed memory overflow bug triggered by very 44 large bitmaps. Fixes RedHat bug #955808 reported by Vincent Danen 45 and Debian bug #778646 reported by Moritz Muehlenhoff. 46 (2014/09/06) PS1 - test suite: added binary-check, to check that 47 files are written in binary mode. Mostly relevant on Windows. 48 (2014/09/06) PS1 - portability: fixed potential binary file mode 49 bug on MinGW64. 50 (2014/03/30) PS1 - man pages: fixed leading blank page with 51 groff -man -Tps. 52 (2013/12/29) PS1 - portability: made regular expressions in test 53 suite POSIX compliant, reported by Ben Bullock. 54 (2013/05/14) PS1 - distribution: removed libtool from distribution. 55 56v1.11 2013/02/19 57 (2013/02/10) PS1 - bitops.c: added "cc" as a clobbered register. 58 (2012/09/13) PS1 - GeoJSON backend: -u option affects rounding, 59 not scaling. 60 (2012/09/12) CH1 - added GeoJSON backend. 61 (2012/03/04) PS1 - minor change in behavior of alphamax parameter: 62 make a corner if alpha >= alphamax (instead of >). This makes 63 little practical difference, except when alphamax = 0, in which 64 case we now get a polygon. Fixes bug #3495854, reported by 65 scribbleink. 66 (2012/02/24) PS1 - added support for BMP format with bitfields. 67 68v1.10 2011/08/19 69 (2011/08/07) PS1 - added --tight option 70 (2011/08/05) PS1 - backends: simplified dimension calculations 71 (2011/08/05) PS1 - eps backend: prevent integer overflow in 72 bounding box. 73 (2011/08/05) PS1 - disallow resolution of 0 dpi. 74 (2011/08/05) PS1 - man page: added BACKEND TYPES section 75 (2011/08/05) PS1 - fixed default scaling at 72dpi for 76 variable-sized backends 77 (2011/08/02) PS1 - new gimppath backend produces SVG output 78 suitable for current versions of Gimp. 79 (2011/08/02) PS1 - added a --flat option for the SVG backend. 80 (2011/07/31) PS1 - test suite: renamed *.out files to prevent 81 make's built-in implicit rules from accidentally overwriting them. 82 (2011/07/26) PS1 - added DXF backend. Thanks to Jonas Benedett 83 Dorr for testing. 84 (2011/07/26) PS1 - use high resolution bounding box in EPS, PDF, 85 and SVG backends 86 (2011/05/13) PS1 - autoconf: CADD can now be given at compile time 87 88v1.9 2010/12/21 89 (2010/12/20) PS1 - getopt.h: fixed compiler warnings 90 (2010/12/20) PS1 - added --tty option to specify progress bar 91 rendering at runtime. 92 (2010/12/20) PS1 - added simplified progress bar for Windows or 93 other dumb terminals. New --enable-dumb-tty configuration option. 94 (2010/12/16) PS1 - test suite: fixed bug where a failed test was 95 not reported in backend-check.sh 96 (2010/12/15) PS1 - test suite: support for $EXEEXT 97 (2010/12/15) PS1 - optimized penalty3 inner loop, 4.6% speedup. 98 (2010/12/15) PS1 - autoconf: new CADD variable to add to CFLAGS 99 (2010/12/15) PS1 - fixed some compiler warnings, added some error 100 handlers, and added some cosmetic top-level free's. 101 (2010/11/25) PS1 - added support for some BMP version 4 and 5 102 files, and for top-down BMP files. Suggested by Kanwar Sangwan. 103 (2010/11/13) PS1 - don't enter filter mode if -- is used 104 (2010/11/09) PS1 - greymap.h, bitmap.h: drop unneeded dependencies 105 (2010/09/07) PS1 - autoconf: fixed getopt_long test to allow 106 cross-compiling, bug #3061403, reported by Igor Filippov. 107 (2010/08/31) PS1 - test suite: added environment variables 108 CHECK_POTRACE and CHECK_MKBITMAP to allow binaries outside the 109 build tree to be tested 110 (2010/08/09) PS1 - autoconf: converted to libtool 111 (2010/08/05) PS1 - autoconf: renamed configure.in as configure.ac 112 (2010/08/05) PS1 - autoconf: added --with-libpotrace to optionally 113 install the Potrace library and header files. 114 (2009/08/03) PS1 - portability: c++ wrapper in potracelib.h, 115 suggested by Peter Jankuliak. 116 (2009/05/13) PS1 - added pdfpage backend for fixed pagesize PDF 117 output. 118 (2009/04/07) PS1 - decompose.c: minor optimization 119 (2008/10/08) PS1 - mkbitmap: speed increase by 8% to 26% by 120 eliminating unnecessary bounds checks and interpolation. 121 (2008/10/05) PS1 - trace.c: separate function for path reversal 122 (2008/10/03) PS1 - progress.h: do the right thing if progress == 123 NULL 124 (2008/10/03) PS1 - moved detrand() to auxiliary.h 125 (2008/08/21) PS1 - mkbitmap: added --blur option. 126 (2008/08/12) PS1 - combined the old -V option with -v. 127 (2008/08/12) PS1 - test suite: adjusted tolerances to fix bug 128 #1745456 129 (2007/12/31) PS1 - include curve.h where path_t is used 130 (2007/12/28) PS1 - flush stderr when interleaved with stdout 131 (2007/12/28) PS1 - portability: don't hardcode size of short int 132 (2007/11/09) PS1 - eps backend: use save-restore to avoid 133 polluting caller's dictionary and for page independence. 134 (2007/05/22) PS1 - xfig backend: added depth to opaque components 135 to avoid them floating to the background. Suggested by Rafael 136 Laboissiere. 137 138v1.8 2007/04/09 139 (2007/04/08) PS1 - portability: use 'test' instead of '[' in shell 140 scripts. 141 (2007/04/08) PS1 - test suite: run PDF checks as a separate test. 142 (2007/04/06) PS1 - fixed logical expressions in flate.c 143 (2007/02/19) PS1 - portability: replacements for inline and M_PI 144 (2007/01/16) PS1 - test suite: added checks for rotation in 145 PostScript, PDF, and PGM backends 146 (2007/01/16) PS1 - pdf backend: added rotation 147 (2007/01/16) PS1 - pdf backend: renamed shipcom() function 148 (2007/01/14) PS1 - autoconf: check if getopt_long reorders its 149 arguments. 150 (2007/01/13) PS1 - made pseudo-random number generation 151 thread-safe and much faster. 152 (2006/12/20) PS1 - renamed some structures in lzw.c, main.h 153 (2006/12/20) PS1 - portability: fixed some compiler issues for 154 Amiga, reported by Andreas Kleinert. 155 (2006/12/20) PS1 - main.c: changed some return types to void. 156 (2006/08/14) PS1 - made curve.c:privcurve_free_members() static. 157 (2005/12/22) PS1 - renamed README.win as README-WIN 158 (2005/11/11) PS1 - portability: use binary file i/o in Cygwin. 159 Suggested by Henry He. 160 (2005/06/24) PS1 - potracelib: fixed allocation bug, reported by 161 Jung Shin. 162 (2005/06/23) PS1 - potracelib_demo.c: free resources properly. 163 (2005/06/23) PS1 - initialize unused private state to 0. 164 (2005/06/23) PS1 - decompose.c: improved memory allocation scheme. 165 (2005/05/06) PS1 - added "alphacurve" field to private curve 166 structure, so that backends that don't use the public interface 167 (such as the EPS backend) can be warned of non-conforming curves. 168 169v1.7 2005/03/06 170 (2005/03/05) PS1 - fixed progress bar subrange bug. 171 172v1.6 2005/02/27 173 (2005/02/22) PS1 - added "epsilon" feature to progress bar. 174 (2005/02/22) PS1 - documentation: changed potracelib documentation 175 to TeX format. 176 (2005/02/07) PS1 - tweaked progress bar 177 (2005/01/24) PS1 - added --progress option to potrace frontend. 178 (2005/01/24) PS1 - potracelib: added progress bar interface. 179 (2005/01/23) PS1 - fixed overflow bug in fast summing code. 180 (2005/01/23) PS1 - rewrote trace.c:bestpolygon(). This speeds up 181 potrace by 20% on typical data and up to 60% in some bad cases. 182 (2004/12/07) PS1 - documentation: added potracelib.txt 183 (2004/12/07) PS1 - renamed aux.h as auxiliary.h, since aux is an 184 invalid filename in Windows. 185 (2004/12/06) PS1 - API: added default parameters 186 (2004/12/06) PS1 - API: added potrace_state_t 187 (2004/12/06) PS1 - API: added "const" qualifiers 188 (2004/12/06) PS1 - removed conv and areac fields from privpath_t. 189 (2004/12/06) PS1 - changed bounding box handling in decompose.c 190 (2004/12/06) PS1 - split curve_t into public and private parts. 191 (2004/12/06) PS1 - moved curve/path allocation to curve.c. 192 (2004/12/06) PS1 - renamed a type in lzw.h. 193 (2004/12/06) PS1 - renamed source files. 194 (2004/12/04) PS1 - split path_t into public and private parts. 195 (2004/12/03) PS1 - split core functionality from user interface. 196 (2004/12/03) PS1 - moved parts of bitmap.h to potracelib.h. Split 197 bitmap.c into bitmap.c and bitmap_io.c. Moved path decomposition 198 auxiliary functions from bitmap.c to path.c. 199 (2004/12/03) PS1 - converted some stray local functions to static 200 (2004/12/01) PS1 - moved basic curve data type definitions to 201 potracelib.h 202 (2004/12/01) PS1 - collected some repeatedly used macros in aux.h 203 (2004/12/01) PS1 - started to create API to potrace core 204 functionality in potracelib.c and potracelib.h. Also added new 205 libpotrace.a target. 206 (2004/12/01) PS1 - made curve.c and path.c reentrant by removing 207 global variable "info". 208 (2004/11/28) PS1 - made a85* auxiliary functions static in 209 flate.c. 210 (2004/11/28) PS1 - pdf backend: removed arbitrary page limit. 211 (2004/11/24) PS1 - pdf backend: replaced ftell() by explicit byte 212 count to work correctly with stdout. 213 (2004/11/24) PS1 - portability: use binary file i/o in MinGW. 214 (2004/10/08) PS1 - minor cleanup in backend_pdf.c. 215 (2004/09/21) PS1 - replace -O3 compilation default by -O2; inlined 216 critical functions manually instead. 217 (2004/09/18) PS1 - slightly optimized multiplications in 218 curve.c:bezier(). Thanks to Thomas M.Ott for suggesting it. 219 (2004/09/16) PS1 - list of backends in help message is now 220 generated. 221 (2004/09/16) PS1 - test suite: added test for pdf backend. 222 (2004/09/14) PS1 - removed bits.c, renamed bits.h to bitops.h, and 223 use static inline functions instead of macros. 224 (2004/09/14) PS1 - test suite: adjusted tolerances. 225 (2004/09/12) PS1 - mkbitmap: when reading plain pbm files, use 226 colors 0 and 255, not 0 and 1. 227 (2004/09/12) PS1 - potrace and mkbitmap: don't complain about 228 "junk at the end of file" if the junk is whitespace and 229 comments. Treat files which contain only whitespace and comments 230 as empty. 231 (2004/08/05) TA1 - added pdf backend. 232 233v1.5 2004/07/08 234 (2004/07/08) PS1 - removed dependency on external "compress" 235 program. Removed ztops.c, added lzw.c, bits.c. 236 (2004/03/17) PS1 - don't leave temporary file /tmp/have_compress.* 237 lying around. 238 (2004/03/06) PS1 - fixed a type error in have_compress.c:28. 239 240v1.4 2004/03/06 241 (2004/03/05) PS1 - removed the compile-time check for the 242 "compress" program and replaced it by a run-time check. 243 (2004/03/03) PS1 - ztops.c: fixed compression bug where garbage 244 was added after the end of stream. 245 (2004/02/09) PS1 - further optimized the speed of the function 246 path.c:pathlist_to_tree, which now takes less than 0.1% of total 247 running time. 248 (2004/02/09) PS1 - distribution: removed potrace.{ps,pdf} from 249 distribution, changed textfiles to DOS mode in Cygwin distribution 250 (2004/01/19) PS1 - corrected a bug in 1.2 which caused an enormous 251 slowdown in the function path.c:pathlist_to_tree. 252 (2004/01/17) PS1 - test suite: better quoting in shell scripts to 253 be more robust against spaces in filenames etc. 254 (2004/01/17) PS1 - test suite and ztops.c: respect TEMPDIR 255 environment variable, if set. 256 257v1.3 2004/01/15 258 (2004/01/14) PS1 - test suite: adjusted tolerances. 259 (2004/01/13) PS1 - when reading a bitmap of width or height 0, 260 pretend the offending dimension is 1. This is not 100% logical 261 in all cases, but better than producing garbage. 262 (2004/01/13) PS1 - fixed bounding box in xfig backend. 263 (2004/01/13) PS1 - added missing gsave/grestore to ps backend. 264 (2004/01/07) PS1 - autoconf: search for zlib.h in 265 ${prefix}/include and for libz.so in ${prefix}/lib, in case they 266 are not found elsewhere. 267 (2004/01/07) PS1 - eliminated some unused variables. 268 (2004/01/07) PS1 - portability: eliminated typeof() from 269 mkbitmap.c 270 (2004/01/07) PS1 - test suite: added a test for empty bitmaps. 271 (2003/12/25) PS1 - fixed bug #866223: potrace crashes when applied 272 to an empty bitmap. 273 (2003/12/25) PS1 - when options -2 or -3 are unsupported, ignore 274 them rather than failing, for improved compatibility. 275 (2003/12/25) PS1 - autoconf: added --disable-zlib configuration 276 option and improved error messages for missing zlib.h or libz.so 277 (2003/12/25) PS1 - portability: eliminated dynamic arrays in 278 mkbitmap.c 279 (2003/12/25) PS1 - test suite: added a check for mkbitmap. 280 (2003/12/25) PS1 - test suite: more portable filesize checking in 281 backend-check.sh 282 283v1.2 2003/12/23 284 (2003/12/23) PS1 - added an xfig backend. 285 (2003/12/23) PS1 - added --group option to group related shapes 286 together in SVG backend. 287 (2003/12/23) PS1 - added --opaque option to paint white shapes 288 opaquely, instead of leaving them transparent, in PS/EPS and SVG 289 backends. 290 (2003/12/23) PS1 - rewrote path decomposition algorithm to 291 calculate path containment tree, to be used for grouping. 292 (2003/12/23) PS1 - test suite: added a check of postscript output 293 using ghostscript. 294 (2003/09/18) PS1 - autoconf: added tests for -lm and -lz 295 libraries, and for zlib.h header file. 296 (2003/09/18) PS1 - portability: cleaned up code so that it can be 297 compiled with a C++ compiler. 298 (2003/09/17) PS1 - code cleanup in main.c:main(). 299 (2003/09/17) PS1 - added mkbitmap program. 300 (2003/09/17) PS1 - added -ffloat-store compiler flag for improved 301 floating point predictability. 302 (2003/09/12) PS1 - test suite: added test for BMP runlength 303 encoding. 304 (2003/09/12) PS1 - fixed frontend for BMP runlength encoding. 305 (2003/09/11) PS1 - autoconf: added test to work around gcc 306 compiler bug 12243, which affected curve.c:adjust_vertices(). 307 (2003/09/11) PS1 - renamed pbm.c as bitmap.c, pgm.c as greymap.c 308 (2003/09/11) PS1 - moved some bitmap details from path.c to pbm.c 309 (2003/09/10) PS1 - renamed pbm.h macros to start with BM_ 310 (2003/09/02) PS1 - portability: added missing fallback value for 311 M_PI to backend_pgm.c. 312 (2003/08/28) PS1 - specialized matrix solving code for n=2. 313 (2003/08/28) PS1 - portability (and scalability): eliminated 314 dynamic arrays. 315 (2003/08/28) PS1 - portability: replaced vsnprintf by vsprintf. 316 (2003/08/28) PS1 - portability: provided fallback value for M_PI 317 (2003/08/27) PS1 - autoconf: now checks whether the compress 318 program works, not just whether it exists. 319 (2003/08/27) PS1 - test suite: wrote three tests for "make check" 320 (2003/08/27) PS1 - portability: fixed some floating point errors 321 on DEC Alpha: division by zero and log of zero. 322 (2003/08/27) PS1 - changed bitmap representation to take advantage 323 of 64-bit architectures. 324 (2003/08/27) PS1 - changed default scaling in ps and eps modes for 325 small page sizes. 326 (2003/08/26) PS1 - allow arguments of command line options -b, -z, 327 -P to be abbreviated by "unambiguous prefix". 328 (2003/08/26) PS1 - added rotation to gimppath backend. 329 (2003/08/24) PS1 - portability: removed GNU extensions from printf 330 format strings in backend_eps. 331 (2003/08/22) PS1 - converted --unit to double value. 332 (2003/08/22) PS1 - added experimental gimppath backend. 333 (2003/08/20) PS1 - close paths in postscript/eps backend. 334 (2003/08/20) PS1 - fixed bug in parsing command line options: long 335 options --cleartext, --level2, --level3 did not work properly. 336 Thanks to George Williams for reporting this bug. 337 338v1.1 2003/08/18 339 (2003/08/17) PS1 - replaced calc_lon algorithm by a faster 340 implementation. This results in speedups of up to factor 3.3 for 341 certain large input files. 342 (2003/08/17) PS1 - added --invert option. 343 (2003/08/17) PS1 - improved error messages on wrong file format. 344 (2003/08/17) PS1 - code cleanup to build under fussier compilers. 345 Thanks to Nelson Beebe for submitting compiler logs for a large 346 number of setups. 347 (2003/08/17) PS1 - renamed curve.c:quad as quadform to avoid name 348 clash on IBM AIX, Compaq/DEC ODF/1. 349 (2003/08/17) PS1 - autoconf: let user override CFLAGS at configure 350 time, and use -Wall and -O3 only for gcc compiler 351 (2003/08/16) PS1 - added --blacklevel option to control 352 image-to-bitmap conversion 353 (2003/08/16) PS1 - added ability to read BMP files. Changed error 354 reporting in case of empty files, or if there is junk at the end 355 of a file in multipage mode. 356 (2003/08/14) PS1 - as a convenience, now also read files in PGM 357 and PPM format and convert to bitmap by simple threshold method. 358 This is because many programs, including the Gimp and the *topnm 359 tools, produce PNM output which must be further converted to PBM. 360 (2003/08/14) PS1 - rearranged order of options in usage message. 361 (2003/08/14) PS1 - implemented -d1 option for SVG backend. This 362 outputs a jaggy bitmap with no smoothing. 363 (2003/08/14) PS1 - autoconf: improved handling of 364 --enable-compress 365 (2003/08/14) PS1 - added SVG backend. 366 (2003/08/14) PS1 - renamed old -s option as -S 367 (2003/08/12) PS1 - added README.win 368 (2003/08/12) PS1 - autoconf: fixed bug #787182: added non-standard 369 compile time options to help message for ./configure script 370 371v1.0 2003/08/10 372 (2003/08/10) PS1 - added file i/o code 373 (2003/08/08) PS1 - optimized number of times the penalty3 function 374 is called. Speedups of factor 2.7 were observed on large files. 375 (2003/08/08) PS1 - added --opttolerance and --alphamax options. 376 (2003/08/07) PS1 - autoconf: changed configure.in so that test for 377 compress is omitted when the user overrides it - this prevents a 378 wrong cached value to be read. 379 (2003/08/07) PS1 - keep output flushed in postscript mode 380 (2003/08/07) PS1 - fixed memory leak in multiple page mode 381 (2003/08/06) PS1 - replaced --opticurve by --longcurve option; 382 opticurve is now the default 383 (2003/08/06) PS1 - added opticurve sensitivity to pgm backend 384 (2003/08/06) PS1 - restricted opticurves to be bounded away from 385 180 degrees 386 (2003/08/06) PS1 - allow margins and papersize to determine width 387 if it is not defined by other means in postscript mode 388 (2003/08/06) PS1 - added ability to read multiple bitmaps in 389 postscript mode 390 (2003/08/05) PS1 - new --longcoding option 391 (2003/08/05) PS1 - new optimized eps backend which works with 392 opticurve. 393 (2003/07/31) PS1 - replaced O(n^3) calc_lon algorithm by a new 394 O(n^2) algorithm. Observed speedups of factor 80. 395 (2003/07/27) PS1 - added --opticurve option and integrated 396 opticurve code in curve.c 397 (2003/06/04) PS1 - made bm_to_pathlist a lot more efficient by 398 scanning and clearing only bounding box of mask in inner scan. 399 (2002/11/17) PS1 - changed bm_to_pathlist prototype to use 400 explicit return value. 401 (2002/10/09) PS1 - autoconf: added automake/autoconf scripts in 402 preparation for public distribution. 403