summaryrefslogtreecommitdiff
path: root/ext/mbstring
diff options
context:
space:
mode:
authorMasaki Kagaya <masakielastic@gmail.com>2015-02-19 19:08:50 +0900
committerMasaki Kagaya <masakielastic@gmail.com>2015-02-19 19:08:50 +0900
commit89e9746f746c1424c257792557548f5895f7bbd2 (patch)
treedb568fd025eefe190491592719bdf7ddcaea125b /ext/mbstring
parentf10a182674475b200c67f651aa8fd0d90891368a (diff)
downloadphp-git-89e9746f746c1424c257792557548f5895f7bbd2.tar.gz
use php_mb_convert_encoding instead of php_mb_check_encoding
Diffstat (limited to 'ext/mbstring')
-rw-r--r--ext/mbstring/mbstring.c47
1 files changed, 24 insertions, 23 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 03ed229381..dbff4eded2 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -4675,46 +4675,47 @@ static inline long php_mb_ord(const char* str, size_t str_len, const char* enc)
return -1;
}
- return (unsigned char) ret[0] << 24 |
- (unsigned char) ret[1] << 16 |
- (unsigned char) ret[2] << 8 |
- (unsigned char) ret[3];
+ cp = (unsigned char) ret[0] << 24 | \
+ (unsigned char) ret[1] << 16 | \
+ (unsigned char) ret[2] << 8 | \
+ (unsigned char) ret[3];
+
+ efree(ret);
+
+ return cp;
} else if (php_mb_check_forbidden_encoding(no_enc)) {
php_error_docref(NULL, E_WARNING, "Unsupported encoding \"%s\"", enc);
return -1;
}
- if (!php_mb_check_encoding(str, str_len, enc)) {
-
- if (no_enc == MBSTRG(current_internal_encoding)->no_encoding) {
- cp = MBSTRG(current_filter_illegal_substchar);
- } else {
- cp = 0x3f;
- }
+ ret = php_mb_convert_encoding(str, str_len, enc, enc, &ret_len);
- return cp;
+ if (ret == NULL) {
+ return -1;
}
encoding = mbfl_no2encoding(no_enc);
- char_len = php_mb_mbchar_bytes_ex(str, encoding);
+ char_len = php_mb_mbchar_bytes_ex(ret, encoding);
if (char_len == 1) {
- cp = (unsigned char) str[0];
+ cp = (unsigned char) ret[0];
} else if (char_len == 2) {
- cp = ((unsigned char) str[0] << 8) |
- (unsigned char) str[1];
+ cp = ((unsigned char) ret[0] << 8) | \
+ (unsigned char) ret[1];
} else if (char_len == 3) {
- cp = ((unsigned char) str[0] << 16) |
- ((unsigned char) str[1] << 8) |
- (unsigned char) str[2];
+ cp = ((unsigned char) ret[0] << 16) | \
+ ((unsigned char) ret[1] << 8) | \
+ (unsigned char) ret[2];
} else {
- cp = ((unsigned char) str[0] << 24) |
- ((unsigned char) str[1] << 16) |
- ((unsigned char) str[2] << 8) |
- (unsigned char) str[3];
+ cp = ((unsigned char) ret[0] << 24) | \
+ ((unsigned char) ret[1] << 16) | \
+ ((unsigned char) ret[2] << 8) | \
+ (unsigned char) ret[3];
}
+ efree(ret);
+
return cp;
}