Hi Ken,

I'm fairly new to PHP extension programming, so forgive me if I'm
missing the obvious, but your code appears to be trying to copy a
global variable to a local scope. Is that your intent?

If so, why can't the script do this itself by using a "global"
declaration for the variable? For example:

<?
$v = "foo";

function bar()
{
  global $v;
  echo "v = $v\n";
}
?>

As for why you're getting a segfault, I suspect it's a reference
counting issue. Have a look at the definition of
ZEND_SET_SYMBOL_WITH_LENGTH in zend_API.h and you'll see it is
modifying the container you retrieved from EG(symbol_table).

Good luck,
- Mark

> I am trying to make a function for my extension that makes a predefined
> variable global
>
> I have tried something along the lines of:
>
>  if(zend_hash_find(&EG(symbol_table), var, strlen(var)+1,  (void **)
>    &vars_data)!=FAILURE)
> {
>   ZEND_SET_SYMBOL(EG(active_symbol_table), var,   *vars_data);
> }
>
> but it seg faults upon second execution.
>
> Can someone reccomend a more successful method of accomplishing this?
>
>
> Chhers,
>
> Ken
>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to