summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorRui Hirokawa <hirokawa@php.net>2005-12-23 11:14:54 +0000
committerRui Hirokawa <hirokawa@php.net>2005-12-23 11:14:54 +0000
commit283f4759f605249f699f0cc1e1c9a96d97e8d2d8 (patch)
tree3bb98c651e957e8bf08d148a2b391fb91febe317 /ext
parentb863d322884e4f0789eb136c22d66780b3244bb8 (diff)
downloadphp-git-283f4759f605249f699f0cc1e1c9a96d97e8d2d8.tar.gz
fixed #28899 mb_substr() and substr() work differently when mbstring.func_overload is enabled.
Diffstat (limited to 'ext')
-rw-r--r--ext/mbstring/mbstring.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 14c662d8e5..999397af89 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -60,7 +60,6 @@
#include "ext/standard/url.h"
#include "main/php_output.h"
#include "ext/standard/info.h"
-
#include "libmbfl/mbfl/mbfl_allocators.h"
#include "php_variables.h"
@@ -1763,6 +1762,11 @@ PHP_FUNCTION(mb_substr)
}
}
+ if (((MBSTRG(func_overload) & MB_OVERLOAD_STRING) == MB_OVERLOAD_STRING)
+ && (from >= mbfl_strlen(&string))) {
+ RETURN_FALSE;
+ }
+
ret = mbfl_substr(&string, &result, from, len);
if (ret != NULL) {
RETVAL_STRINGL((char *)ret->val, ret->len, 0); /* the string is already strdup()'ed */