Re: Question on return_value

From: Date: Tue, 01 Nov 2005 09:29:21 +0000
Subject: Re: Question on return_value
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-19879@lists.php.net to get a copy of this message
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

« previous php.internals (#19879) next »