f2e33ed300
Changelog: Version 5.0.4 ============= Fix for a rare misrendering bug when a GIF overruns the decompression-code table. The image on which this was spotted was a relatively long-running animated GIF; still images of ordinary size should have been immune. Version 5.0.3 ============= Fix a build-system glitch so it will install manpages. Version 5.0.2 ============= Documentation and polish ------------------------ * Partial build is now possible on systems without xmlto. Code Fixes ---------- * Change unused return of EGifSetGifVersion() to void. * Buffer overrun prevention in gifinto. Version 5.0.1 ============= Documentation and polish ------------------------ * There is now an installable manual page for the GIFLIB utility kit. Retirements ----------- * gifinter is gone. Use convert -interlace from the ImageMagic suite. Code Fixes ---------- * In 5.0.0 the private gif89 bit wasn't being guaranteed cleared at the beginning of EGifGetGifVersion(); this occasionally led to an incorrect version prefix being issued dependent on the state of malloced memory. * An EGifSetGifVersion() function taking a GifFile argument has been added for use with the low-level sequential API. This change requires a bump of the library revision number. Version 5.0.0 ============= Changes to the API require a library major-version bump. Certain initialization functions have acquired an integer address argument for passing back an error code, in order to avoid thread-unsafe static storage. Application code using extension blocks will require minor changes. A few functions have been renamed. Code Fixes ---------- * Fixes applied for CVE-2005-2974 and CVE-2005-3350 This closes Debian bug #337972. New API Features ---------------- Thread Safety ~~~~~~~~~~~~~ The library is now completely re-entrant and thread-safe. * Library error handling no longer uses a static cell to store the last error code registered; that made the library thread-unsafe. For functions other than GIF file openers, the code is now put in an Error member of the GifFileType structure. The GifError() amd GifLastError() functions that referenced that static cell are gone, and the GifErrorString() function introduced in the 4.2 release now takes an explicit error code argument. * GIF file openers - DGifOpenFileName(), DGifOpenFileHandle(), DGifOpen(), EGifOpenFileName(), EGifOpenFileHandle(), and EGifOpen() - all now take a final integer address argument. If non-null, this is used to pass back an error code when the function returns NULL. Extensions ~~~~~~~~~~ The ExtensionBlock API has been repaired, solving some problems with GIF89 extension handling in earlier versions. * DGifSlurp() and EGifSpew() now preserve trailing extension blocks with no following image file. * Three documented functions - EGifPutExtensionFirst(), EGifPutExtensionNext(), and EGifPutExtensionLast() - have been relaced by new functions EGifPutExtensionLeader(), EGifPutExtensionBlock(), and EGifPutExtensionTrailer(). See the Compatibility section of the library API documentation for details. * New functions DGifSavedExtensionToGCB() and EGifGCBToSavedExtension() make it easy to read and edit GIF89 graphics control blocks in saved images. Namespacing ~~~~~~~~~~~ All functions exported by giflib now have DGif, EGif, or Gif as a name prefix. * Three documented functions - MakeMapObject(), FreeMapObject(), and UnionColorMap() - have been renamed to GifMakeMapObject(), GifFreeMapObject(), and GifUnionColorMap() respectively. * The library Draw* functions are now prefixed GifDraw*, and the text-drawing ones are suffixed with "8x8". This fixes a conflict with the Windows API and leaves the door open for more general text-drawing functions with different font sizes. Other changes ~~~~~~~~~~~~~ * DGifSlurp() and EGifSpew() now read and write interlaced images properly. * The amazingly obscure colormap sort flag and pixel aspect ratio features of GIF are now read and preserved, for whatever good that may do. * Six undocumented functions have been renamed; five of these take additional or slightly different argument types. See the Compatibility section of the library API documentation for details. * There's now an EGifGetGifVersion() that computes the version EGifSpew() will write. * QuantizeBuffer() has been returned to the core library as GifQuantizeBuffer() - turns out some important applications (notably mplayer) were using it. * TRUE and FALSE macros are gone, also VoidPtr. No more namespace pollution. * Various arguments have been made const where possible. Retirements ----------- * The (undocumented) gifinfo utility is gone. Use giftool -f instead. * The gifburst utility is gone. Everybody has image viewers that can pan now, and removing it gets rid of a dependency on Perl. * gifcompose is gone. It was a decent idea when I wrote it in 1989, but I did the same thing better and cleaner a decade later with PILdriver in the PIL package. Removing it gets rid of a dependency on shell. * gif2x11 gifasm, gifcomb, gifflip, gifovly, gifpos, gifresize, and gifrotate are all gone. The ImageMagick display(1)/convert(1) utilities and PILdriver do these things better and in a format-independent way. * Lennie Araki's Windows C++ wrapper is gone. It's eight years old, unmaintained, he has dropped out of sight, and a better one needs to be written to use the high-level GIFLIB API and GIF89 graphics control extension support. We'll carry such a wrapper when we have a maintainer for it. * EGifSetVersion(), introduced in 4.2, is gone. The library always writes GIF87 or GIF89 as required by the data. This change helps with thread safety. Utilities --------- * Several utilities have been renamed to (a) fix last-century's habit of arbitarily smashing vowels out of names to make them just one or two characters shorter, (b) ensure that every utility in this set has 'gif' as a name prefix. Here's the list: giffiltr -> giffilter gifspnge -> gifsponge icon2gif -> gifbuild text2gif -> gifecho raw2gif -> gif2raw * To go with its new name, gif2raw now dumps raw pixels from a GIF if the (previously required) size option is missing. * Standalone rgb2gif is gone; the same capability is now a mode of gif2rgb. * giftext displays the parsed contents of GIF89 graphics control blocks. * gifbuild handles GIF89 graphics control blocks and Netscape animation loop blocks; it can can display and update either. * gifrotate and other filter utilities now preserve extension blocks, including the graphics control information for transparency and delay time. * A new utility, giftool, supports a wide variety of filtering operations on GIFs, including: setting background and transparency colors, changing interlacing, setting image delays, setting the user-input flag, and setting the aspect-ratio byte. It can sequence multiple operations. * The test-pattern generators gifbg, gifcolor, gihisto and gifwedge and the code templates giffilter and gifsponge are no longer installed by default. Documentation and polish ------------------------ * The history.txt and build.txt and files from 4.2.0 now have .asc extensions to indicate that they use asciidoc markup, contrasting with the txt standards files from CompuServe. * The documentation now includes "What's In A GIF", a very detailed narrative description of the file format. * The -A option of gifasm (for inserting a loop control block) is documented. * The documentation directory includes a copy of the original GIF87 specification as well as GIF89's. * The project now has a logo. Version 4.2.0 ============= Now maintained by ESR again after handoff by Toshio Kuratomi. Code Fixes ---------- * Code updated internally to C99 to enable more correctness checks by the compiler. Compiles under GCC 4.6.1 without errors or warnings. * A rare resource leak in the colormap-object maker was found with Coverity and fixed. * The code now audits clean under Coverity and cppcheck. * splint cleanup begun, there's a lot of work still to do on this. New API Features ---------------- * The default GIF version to write is now computed at write time from the types of an image's extension blocks, but can be overridden with EGifSetGifVersion(). * EGifSpew() is now thread-safe. * Two new functions, GifError() and GifErrorString(), return the error state in a form that can be used by programs. * Two library functions - EGifOpenFileName() and EGifPutImageDesc() - now have bool rather than int flag arguments. Since bool is a typedef of int and TRUE/FALSE have been redefined to true/false, both source and object compatibility with older library versions should be preserved. * GAGetArgs(), used only in the utilities, now returns bool rather than int. * The undocumented GIF_LIB_VERSION symbol is gone from the library header. It has been replaced with three documented symbols: GIFLIB_MAJOR, GIFLIB_MINOR, and GIFLIB_RELEASE. Retirements ----------- * The gif2epsn and gif2iris utilities are gone. They were full of platform dependencies for platforms long dead. There are enough platform-independent GIF viewers in the world that these weren't adding any value. Removing these gets rid of a dependency on GL. * The rle2gif, gif2rle, and gif2ps utilities are also gone. There are enough multiformat image converters in the world that these weren't adding any value either. Removing them reduces the codebase's dependencies. * The undocumented DumpScreen2Gif() is gone from the library. The only non-obsolete capture mode it supported was through X, and that probably hasn't been used in years and is replaceable by any number of capture utilities. Dropping this code makes the library's portability issues go away. * QuantizeBuffer(), GifQprintf(), PrintGifError(), GIF_ERROR() and GIF_MESSAGE() have been removed from the core library. They were used only by the utilities. QuantizeBuffer() has been inlined where it was used and the latter three are now part of the utility support library. * The Game Boy Advanced test code is gone. The platform was discontinued in 2008; more to the point, nobody ever documented the code's assumptions or expected results. * The Changelog file is now retained for archival purposes only, and because autotools throws a hissy fit if there isn't one. The single point of truth about changes and the reasons for them is the repository history. Behavior changes ---------------- * The -q option of the utilities is replaced by an opposite -v (verbose) option; the default is now quiet for all platforms. Defaulting to chattiness on MSDOS made sense in a world of slow text consoles, but not today. Testing ------- * There is now a proper regression-test suite; run 'make' in tests/. The old test-unx script is now tests/visual-check and can be run occasionally for a check with the Mark One Eyeball. Documentation ------------- * Build instructions now live in build.txt * An overview of the giflib API now lives in api.txt. * Documentation is now in DocBook-XML, so either HTML or man pages can be generated from it. |
||
---|---|---|
.. | ||
buildlink3.mk | ||
DESCR | ||
distinfo | ||
Makefile | ||
Makefile.common | ||
PLIST |