summaryrefslogtreecommitdiff
path: root/ext/exif/exif.c
diff options
context:
space:
mode:
authorMoriyoshi Koizumi <moriyoshi@php.net>2010-12-22 10:25:33 +0000
committerMoriyoshi Koizumi <moriyoshi@php.net>2010-12-22 10:25:33 +0000
commite8b15906675441af7dbe1d78c566d75eeeea944d (patch)
tree506fa346f2b36132aff245544ea6b06d77f75162 /ext/exif/exif.c
parent9b698dbceaceab67d3bb30777960e54789153cd5 (diff)
downloadphp-git-e8b15906675441af7dbe1d78c566d75eeeea944d.tar.gz
- Fix build.
Diffstat (limited to 'ext/exif/exif.c')
-rw-r--r--ext/exif/exif.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/ext/exif/exif.c b/ext/exif/exif.c
index ccecc94e74..97a0a638e7 100644
--- a/ext/exif/exif.c
+++ b/ext/exif/exif.c
@@ -166,18 +166,30 @@ ZEND_DECLARE_MODULE_GLOBALS(exif)
ZEND_INI_MH(OnUpdateEncode)
{
- if (new_value && strlen(new_value) && !zend_multibyte_check_encoding_list(new_value TSRMLS_CC)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value);
- return FAILURE;
+ if (new_value && new_value_length) {
+ const zend_encoding **return_list;
+ size_t return_size;
+ if (FAILURE == zend_multibyte_parse_encoding_list(new_value, new_value_length,
+ &return_list, &return_size, 0 TSRMLS_CC)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value);
+ return FAILURE;
+ }
+ efree(return_list);
}
return OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC);
}
ZEND_INI_MH(OnUpdateDecode)
{
- if (!zend_multibyte_check_encoding_list(new_value TSRMLS_CC)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value);
- return FAILURE;
+ if (new_value) {
+ const zend_encoding **return_list;
+ size_t return_size;
+ if (FAILURE == zend_multibyte_parse_encoding_list(new_value, new_value_length,
+ &return_list, &return_size, 0 TSRMLS_CC)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value);
+ return FAILURE;
+ }
+ efree(return_list);
}
return OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC);
}