7.1 extension writing, output parameter remains unchanged

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,
I'm porting our extension from php5.6 to php7.1 x64 Windows, Visual Studio 2015. I'd like to write an extension function that has one input / output parameter type of long. But the parameter value changed in extension is not changed in php. What I'm doing wrong?
The php code is:

$a = 3;
$r = hello_square($a);
var_export($a); echo "\n"; //value of $a still remains 3, should be 9.

The c code is:

PHP_FUNCTION(hello_square)
{
  long a = 0;
  zval *b;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &b) == FAILURE) {
    return;
  }

  a = Z_LVAL_P(b);
  ZVAL_LONG(b, a*a);

  RETURN_BOOL(1);
}

----

I also implemented hello_square this way
PHP_FUNCTION(hello_square)
{
  zend_long b;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &b) == FAILURE) {
    return;
  }

  b = b * b;
  RETURN_BOOL(1);
}

And the value of $a remains unchanged.

Jan.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux