zend_list_delete

php.internals

Jesse Binam

21 years ago
does zend_list_delete free the resource making lines 2 & 3 redundent? 1 ZEND_FETCH_RESOURCE(ftp, ftpbuf_t*, &z_ftp, -1, le_ftpbuf_name, le_ftpbuf); 2 zend_list_delete(Z_LVAL_P(z_ftp)) 3 efree(ftp)

Marcus Boerger

21 years ago
Hello Jesse, Thursday, March 24, 2005, 3:44:18 PM, you wrote:
> does zend_list_delete free the resource making lines 2 & 3 redundent?
> 1 ZEND_FETCH_RESOURCE(ftp, ftpbuf_t*, &z_ftp, -1, le_ftpbuf_name, le_ftpbuf); > 2 zend_list_delete(Z_LVAL_P(z_ftp)) > 3 efree(ftp)
Line three is wrong it should be zval_ptr_dtor(&z_ftp) and no, it doesn't make the efree()/zval_ptr_dtor() redundant. It only frees the members but doesn't care for the zval.
-- Best regards, Marcus mailto:mail@marcus-boerger.de

Sara Golemon

21 years ago
> > 1 ZEND_FETCH_RESOURCE(ftp, ftpbuf_t*, &z_ftp, -1, le_ftpbuf_name,
le_ftpbuf);
> > 2 zend_list_delete(Z_LVAL_P(z_ftp)) > > 3 efree(ftp) > > Line three is wrong it should be > zval_ptr_dtor(&z_ftp) > and no, it doesn't make the efree()/zval_ptr_dtor() redundant. > It only frees the members but doesn't care for the zval. >
For that matter, it should *only* be zval_ptr_dtor(&z_ftp) since in the process of dtoring the zval the list entry is delref'd (what list_delete actually does) anyway. Of course, my question for you would be. Is that *literally* how your code looks? I.e. You fetch a resource immediately before destroying it? Or are you just condensing for brevity? -Sara