Re: [VOTE]strn(case)cmp supporting a negative length as its third paramter
| From: | Rasmus Lerdorf | Date: | Sun, 14 Aug 2011 21:37:59 +0000 |
| Subject: | Re: [VOTE]strn(case)cmp supporting a negative length as its third paramter | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-54598@lists.php.net to get a copy of this message | ||
On 08/14/2011 02:03 PM, Stas Malyshev wrote:
> Hi!
>
> On 8/14/11 11:40 AM, Rasmus Lerdorf wrote:
>> My main issue with changing strncmp/strncasecmp is that these are
>> currently exact mappings of the underlying libc functions. For people
>
> And why should anybody care? 99% of people using PHP never used a libc
> function and can hardly tell libc from gcc. If we can extend this
> function with useful functionality, nobody cares about what libc does.
>
>> For example, I could imagine people writing code along these lines:
>>
>> $len = strlen($user_data) - strlen($suffix);
>> if(!strncmp($user_data, $string, $len)) {
>> // do something
>> }
>
> Warning doesn't fix the bug - and unless you're in 0.0001% of the
> population that actually reads the logs daily and checks every message
> there it would be little to help you. We should have more useful
> functions, not more warnings. Warning won't make this code to work.
I agree, however this change would potentially change the return value
of the function. Before it would warn and not match. Even if you never
saw the warning, at least length -1 would not give you a match. Now if
the user data happens to end with the right character we now have a
string match which is not at all what the code was written to do.
-Rasmus