summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/string.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 012de6a611..e1880c93b6 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -826,9 +826,10 @@ void php3_substr(INTERNAL_FUNCTION_PARAMETERS)
RETURN_FALSE;
}
- if ((f + l) < (int)string->value.str.len) {
- string->value.str.val[f + l] = '\0';
+ if((f+l) > (int)string->value.str.len) {
+ l = (int)string->value.str.len - f;
}
+
RETVAL_STRINGL(string->value.str.val + f, l, 1);
}
/* }}} */