Even though libgd/libgd#492 is not a relevant bug fix for PHP, since
the binding doesn't use the `gdImage*Ptr()` functions at all, we're
porting the fix to stay in sync here.
The broken JPEG image triggers a notice, two warnings and outputs a
message to stderr directly. The additional notice is pretty useless,
and the direct output to stderr is bad. Therefore, we port the
relevant differences from upstream to our bundled libgd. This leaves
us with two warnings; the first one is triggered by libjpeg and shows
the actual problem, the second one is triggered by our libgd wrapper
whenever an image can't be read, what may not have necessarily
triggered a warning before.
There's no need anymore to call an own error handler directly. Instead we
register our error handler and call libgd's error functions (which will
forward). We do this regardless of compiling with the bundled or an external
libgd.
The new (Ex) functions are used with the new ignore_warning parameter
The standard functions are used in _php_image_create_from_string,
sent as a function pointer, and call without this optional parameter.
* new INI option to enable it (off by default)
gd.jpeg_ignore_warning (0|1)
* The default mode is the current behavior
* if the warning mode is enabled, the image may be loaded succesfully
but the jpeg warnings will be raise as notices
. GD is now thread-safe thanks to wrappers around freetype library
. Significant optimization to png writing code.
. Miscellaneous fixes.
Fixed memory leak inside php_imagettftext_common()
Make ext/gd compile with GD 2.0.17+ (gdFreeFontCache() is not avaliable)
This initial checkin has no changes to any of the libgd code so it can
be used as a basis for diffs. It also will not build currently because
of this. The PHP gd checks need to be incorporated along with a bit of
other config magic. It also shouldn't break the build and will only
take effect if you use --with-gd=php right now.