summaryrefslogtreecommitdiff
path: root/ext/gd/libgd
diff options
context:
space:
mode:
authorRemi Collet <remi@php.net>2013-04-23 13:43:57 +0200
committerRemi Collet <remi@php.net>2013-04-23 13:43:57 +0200
commiteb50789910410179565e8f2114d80011e34c0ad7 (patch)
tree7ffa4ac03fce9447019c3f8e8e568f7a9391e563 /ext/gd/libgd
parent734e165d4e427feca9a736b62832a2ff287a22c9 (diff)
downloadphp-git-eb50789910410179565e8f2114d80011e34c0ad7.tar.gz
(re)allow WBMP detection with system libgd
provide getbmi and skipheader not exported functions in gd_compat.
Diffstat (limited to 'ext/gd/libgd')
-rw-r--r--ext/gd/libgd/gd_compat.c36
-rw-r--r--ext/gd/libgd/gd_compat.h3
2 files changed, 39 insertions, 0 deletions
diff --git a/ext/gd/libgd/gd_compat.c b/ext/gd/libgd/gd_compat.c
index b56329029e..f3627a1404 100644
--- a/ext/gd/libgd/gd_compat.c
+++ b/ext/gd/libgd/gd_compat.c
@@ -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);
+}
+
diff --git a/ext/gd/libgd/gd_compat.h b/ext/gd/libgd/gd_compat.h
index 779e709a63..e8fedf80c5 100644
--- a/ext/gd/libgd/gd_compat.h
+++ b/ext/gd/libgd/gd_compat.h
@@ -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
*