On 13.08.2016 at 15:08, Nikita Popov wrote:

> On Sat, Aug 13, 2016 at 2:42 PM, Christoph M. Becker <cmbecke...@gmx.de>
> wrote:
> 
>> You have commented on <https://bugs.php.net/bug.php?id=72828>:
>>
>> | Unless the allocations explicitly use the system allocator (i.e. do
>> | not use emalloc and variants), do NOT introduce NULL checks.
>>
>> Can you please elaborate, why that shouldn't be done.
>>
>> Actually, the allocations use safe_emalloc() and emalloc(),
>> respectively[1].  However, the only client of the function does
>> explicitly check for a NULL return[2], which can only happen, if
>> safe_emalloc() fails.  So if no NULL checks should be done, this one
>> should be removed as well.
>>
>> [1]
>> <https://github.com/php/php-src/blob/php-5.6.24/ext/
>> standard/string.c#L2926-L2927>
>> [2]
>> <https://github.com/php/php-src/blob/php-5.6.24/ext/
>> standard/string.c#L3133-L3134>
> 
> If that's the only failure condition of the function, the check can indeed
> be dropped.

Fine; I'll do that.

> ZMM is an infallible allocator, it will bail out (or abort) if the
> allocation fails. The return value should never be checked -- if it is
> checked, it's a mistake.

Thanks for the explanation!

> If you are concerned about USE_ZEND_ALLOC=0 using a fallible allocator, the
> system allocator hooks in ZMM should be adjusted to check for NULL and
> abort instead (use __zend_malloc instead of malloc, for example).

I don't know whether USE_ZEND_ALLOC=0 is in use on any production
systems, but if that is so, that should be catered to.  And maybe also
to zero size allocations, which have implemention defined behavior
(either NULL or a valid pointer may be returned).

-- 
Christoph M. Becker


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to