summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2005-12-16 14:50:32 +0000
committerAntony Dovgal <tony2001@php.net>2005-12-16 14:50:32 +0000
commite17430e145b0e908ed05ac07bff04fcd5122523b (patch)
treef2020d8e767753718f5304580f7c28ec678a9bd3
parent6c8980140872b1e18204d03a16a6a3bcb35f3aee (diff)
downloadphp-git-e17430e145b0e908ed05ac07bff04fcd5122523b.tar.gz
MF51 Ilia's last fix
fix the test appropriately
-rw-r--r--ext/mbstring/mbstring.c7
-rw-r--r--ext/mbstring/tests/mb_strcut.phpt2
2 files changed, 8 insertions, 1 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 1f7a1c98ca..14c662d8e5 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -1844,6 +1844,13 @@ PHP_FUNCTION(mb_strcut)
}
}
+ if (from > Z_STRLEN_PP(arg1)) {
+ RETURN_FALSE;
+ }
+ if (((unsigned) from + (unsigned) len) > Z_STRLEN_PP(arg1)) {
+ len = Z_STRLEN_PP(arg1) - from;
+ }
+
ret = mbfl_strcut(&string, &result, from, len);
if (ret != NULL) {
RETVAL_STRINGL(ret->val, ret->len, 0); /* the string is already strdup()'ed */
diff --git a/ext/mbstring/tests/mb_strcut.phpt b/ext/mbstring/tests/mb_strcut.phpt
index 8ea074a3cd..6a90d87d20 100644
--- a/ext/mbstring/tests/mb_strcut.phpt
+++ b/ext/mbstring/tests/mb_strcut.phpt
@@ -17,7 +17,7 @@ print mb_strcut($euc_jp, 6, 5,'EUC-JP') . "\n";
print mb_strcut($euc_jp, 0, 100,'EUC-JP') . "\n";
$str = mb_strcut($euc_jp, 100, 10,'EUC-JP');
-($str === "") ? print "OK\n" : print "NG: $str\n";
+($str === false) ? print "OK\n" : print "NG: $str\n";
$str = mb_strcut($euc_jp, -100, 10,'EUC-JP');
($str !== "") ? print "OK: $str\n" : print "NG:\n";