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); 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; 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? Bob