Bob Silva wrote:
Hi,
I have an internal function defined that returns an array zval:
zval *pow_zstring_internal_split(Z_STRVAL_P(ivalue), separator, count, 0
TSRMLS_DC);
When I call it like this, return_value is NULL in userland.
return_value = pow_zstring_internal_split(Z_STRVAL_P(ivalue), separator,
count, 0 TSRMLS_CC);
The outta world doesn't care if you let return_value point else where in
your function. Look up the chapter pointers in your book. Short version:
You need a pointer to a pointer so that the caller gets another pointer.
But when I call it like this, it works as expected and an array is returned
to userland
array = pow_zstring_internal_split(Z_STRVAL_P(ivalue), separator, count, 0
TSRMLS_CC);
*return_value = *array;
Yes, because you change the members of the struct the pointer points at and
the pointer is still the same of that of the "outta world".
I'm sure there is an obvious answer, but given my background (or lack
thereof) in C, I can't figure it out.
How does the temporary assignment change things inside the engine?
Hä? :)
Regards,
--
Michael - <mike(@)php.net> http://dev.iworks.at/ext-http/http-functions.html.gz
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php