On 03.12.2007 18:19, Rachmel, Nir (Nir) wrote:
> Hi,
>
> I have been doing some code-reading. Why is the RSHUTDOWN function for
> syslog ext called only when run under win32?
> Shouldn't the cleanup happen on linux as well?
`man closelog` says it's not required.
DESCRIPTION
closelog() closes the descriptor being used to write to the system
logger. The use of closelog() is optional.
> Another question is for the use of zend_strndup instead of one of the
> non-persistent memory allocation functions (i.e. estrndup() ) ?
> There is no use for this variable after the request dies (as far as I
> understand).
Right, if you use estrndup(), the memory is freed at the end of request,
while zend_strndup() bypasses Zend memory manager using malloc() directly.
> However, so far, I can't seem to understand who/what corrupts my memory.
Me neither :/
> What do you think about extending the RINIT function instead of:
> PHP_RINIT_FUNCTION(syslog)
> {
> if (INI_INT("define_syslog_variables")) {
> start_syslog(TSRMLS_C);
> } else {
> BG(syslog_started)=0;
> BG(syslog_device)=NULL; /* This is the addition */
I think this would just create a memleak.
BG(syslog_device) is checked for NULL and freed in openlog() and MSHUTDOWN.
--
Wbr,
Antony Dovgal
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php