diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2016-07-07 14:47:55 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2016-07-19 00:18:07 +0200 |
commit | 6cb75fb1e8208d79f58351340923059d0d077ee6 (patch) | |
tree | 02f4d09c9f3b98e142ef16d7f5467788d1bec43d | |
parent | 8b905e337c0e88ec66a25e4b7dbbd5c87279ea75 (diff) | |
download | php-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.c | 15 |
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); } /* }}} */ |