mirror of
https://github.com/php/php-src.git
synced 2026-04-05 23:23:03 +02:00
Merge branch 'PHP-5.5'
* PHP-5.5: enable WebP with system libgd when available (re)allow WBMP detection with system libgd provide getbmi and skipheader not exported functions in gd_compat.
This commit is contained in:
@@ -265,6 +265,7 @@ AC_DEFUN([PHP_GD_CHECK_VERSION],[
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromGif, [AC_DEFINE(HAVE_GD_GIF_READ, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageGif, [AC_DEFINE(HAVE_GD_GIF_CREATE, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageWBMP, [AC_DEFINE(HAVE_GD_WBMP, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromWebp, [AC_DEFINE(HAVE_GD_WEBP, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromJpeg, [AC_DEFINE(HAVE_GD_JPG, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromXpm, [AC_DEFINE(HAVE_GD_XPM, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
PHP_CHECK_LIBRARY(gd, gdImageCreateFromGd2, [AC_DEFINE(HAVE_GD_GD2, 1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
|
||||
|
||||
@@ -2411,14 +2411,12 @@ static int _php_image_type (char data[8])
|
||||
} else if (!memcmp(data, php_sig_gif, 3)) {
|
||||
return PHP_GDIMG_TYPE_GIF;
|
||||
}
|
||||
/* Temporary disabled, as gdGetC, getmbi and skipheader not exported in system libgd */
|
||||
#if HAVE_GD_BUNDLED
|
||||
#ifdef HAVE_GD_WBMP
|
||||
else {
|
||||
gdIOCtx *io_ctx;
|
||||
io_ctx = gdNewDynamicCtxEx(8, data, 0);
|
||||
if (io_ctx) {
|
||||
if (getmbi((int(*)(void *)) gdGetC, io_ctx) == 0 && skipheader((int(*)(void *)) gdGetC, io_ctx) == 0 ) {
|
||||
if (getmbi((int(*)(void *)) io_ctx->getC, io_ctx) == 0 && skipheader((int(*)(void *)) io_ctx->getC, io_ctx) == 0 ) {
|
||||
#if HAVE_LIBGD204
|
||||
io_ctx->gd_free(io_ctx);
|
||||
#else
|
||||
@@ -2434,7 +2432,6 @@ static int _php_image_type (char data[8])
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
@@ -33,6 +33,7 @@ const char * gdPngGetVersionString()
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Not exported by libgd, copied from gdhelpers.h */
|
||||
int overflow2(int a, int b)
|
||||
{
|
||||
if(a <= 0 || b <= 0) {
|
||||
@@ -44,3 +45,38 @@ int overflow2(int a, int b)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Not exported by libgd, copied from wbmp.c */
|
||||
int
|
||||
getmbi (int (*getin) (void *in), void *in)
|
||||
{
|
||||
int i, mbi = 0;
|
||||
|
||||
do
|
||||
{
|
||||
i = getin (in);
|
||||
if (i < 0)
|
||||
return (-1);
|
||||
mbi = (mbi << 7) | (i & 0x7f);
|
||||
}
|
||||
while (i & 0x80);
|
||||
|
||||
return (mbi);
|
||||
}
|
||||
|
||||
/* Not exported by libgd, copied from wbmp.c */
|
||||
int
|
||||
skipheader (int (*getin) (void *in), void *in)
|
||||
{
|
||||
int i;
|
||||
|
||||
do
|
||||
{
|
||||
i = getin (in);
|
||||
if (i < 0)
|
||||
return (-1);
|
||||
}
|
||||
while (i & 0x80);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,9 @@ const char * gdPngGetVersionString();
|
||||
const char * gdJpegGetVersionString();
|
||||
int gdJpegGetVersionInt();
|
||||
int overflow2(int a, int b);
|
||||
int getmbi (int (*getin) (void *in), void *in);
|
||||
int skipheader (int (*getin) (void *in), void *in);
|
||||
|
||||
|
||||
/* filters section
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user