summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2016-07-07 14:47:55 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2016-07-19 00:18:07 +0200
commit6cb75fb1e8208d79f58351340923059d0d077ee6 (patch)
tree02f4d09c9f3b98e142ef16d7f5467788d1bec43d
parent8b905e337c0e88ec66a25e4b7dbbd5c87279ea75 (diff)
downloadphp-git-6cb75fb1e8208d79f58351340923059d0d077ee6.tar.gz
Fix #70315: 500 Server Error but page is fully rendered
That happens because the external libgd uses other error codes than PHP (and the bundled libgd), but the libgd error codes are simply forwarded to php_verror(). We fix that by properly mapping libgd errors to PHP errors.
-rw-r--r--ext/gd/gd.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/ext/gd/gd.c b/ext/gd/gd.c
index cb070abf84..d8114649ae 100644
--- a/ext/gd/gd.c
+++ b/ext/gd/gd.c
@@ -69,6 +69,9 @@ static void php_free_ps_enc(zend_rsrc_list_entry *rsrc TSRMLS_DC);
#endif
#include <gd.h>
+#ifndef HAVE_GD_BUNDLED
+# include <gd_errors.h>
+#endif
#include <gdfontt.h> /* 1 Tiny font */
#include <gdfonts.h> /* 2 Small font */
#include <gdfontmb.h> /* 3 Medium bold font */
@@ -1099,6 +1102,18 @@ void php_gd_error_method(int type, const char *format, va_list args)
{
TSRMLS_FETCH();
+ switch (type) {
+ case GD_DEBUG:
+ case GD_INFO:
+ case GD_NOTICE:
+ type = E_NOTICE;
+ break;
+ case GD_WARNING:
+ type = E_WARNING;
+ break;
+ default:
+ type = E_ERROR;
+ }
php_verror(NULL, "", type, format, args TSRMLS_CC);
}
/* }}} */