diff options
author | Gustavo André dos Santos Lopes <cataphract@php.net> | 2012-04-30 15:29:36 +0200 |
---|---|---|
committer | Gustavo André dos Santos Lopes <cataphract@php.net> | 2012-05-17 17:23:53 +0200 |
commit | 30bf2fbb9d92b66b2f40cb3383bbb00d5921269c (patch) | |
tree | fa48a7d8a55c98c8d2625b5d4c6c2a8ae7d6b98c /ext/intl | |
parent | 81d8f4079cac4e215e5ed98b5a6fd1f3a89e375f (diff) | |
download | php-git-30bf2fbb9d92b66b2f40cb3383bbb00d5921269c.tar.gz |
Handle bogus string in intl_charFromString().
Diffstat (limited to 'ext/intl')
-rw-r--r-- | ext/intl/intl_convertcpp.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/intl/intl_convertcpp.cpp b/ext/intl/intl_convertcpp.cpp index 8dddc70293..503402871c 100644 --- a/ext/intl/intl_convertcpp.cpp +++ b/ext/intl/intl_convertcpp.cpp @@ -48,9 +48,16 @@ int intl_stringFromChar(UnicodeString &ret, char *str, int32_t str_len, UErrorCo } /* }}} */ -/* {{{ intl_charFromString */ +/* {{{ intl_charFromString + * faster than doing intl_convert_utf16_to_utf8(&res, &res_len, + * from.getBuffer(), from.length(), &status), + * but consumes more memory */ int intl_charFromString(const UnicodeString &from, char **res, int *res_len, UErrorCode *status) { + if (from.isBogus()) { + return FAILURE; + } + //the number of UTF-8 code units is not larger than that of UTF-16 code //units * 3 + 1 for the terminator int32_t capacity = from.length() * 3 + 1; |