xref: /potrace-1.14/ChangeLog (revision b3fce824)
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