diff options
author | Masaki Kagaya <masakielastic@gmail.com> | 2015-02-19 19:08:50 +0900 |
---|---|---|
committer | Masaki Kagaya <masakielastic@gmail.com> | 2015-02-19 19:08:50 +0900 |
commit | 89e9746f746c1424c257792557548f5895f7bbd2 (patch) | |
tree | db568fd025eefe190491592719bdf7ddcaea125b /ext/mbstring | |
parent | f10a182674475b200c67f651aa8fd0d90891368a (diff) | |
download | php-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.c | 47 |
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; } |