X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fdecl_extvar.c;h=263a25a67f744e2c6b2d4a896881a21660da4973;hb=698841dfdd4d70d24e0b7af25ac7100bc2cb26a4;hp=24304544ec3d6c4aa47ebe56be9246ea002c9f11;hpb=a7ac1c0a3c855321f21682c127a4b707de33a303;p=m6w6%2Fext-psi diff --git a/src/types/decl_extvar.c b/src/types/decl_extvar.c index 2430454..263a25a 100644 --- a/src/types/decl_extvar.c +++ b/src/types/decl_extvar.c @@ -23,14 +23,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ -#include "php_psi_stdinc.h" - -#include "php_psi.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# include "php_config.h" +#endif #include #include +#include "php_psi.h" #include "data.h" +#include "dl.h" struct psi_decl_extvar *psi_decl_extvar_init(struct psi_decl_arg *arg) { @@ -91,16 +95,16 @@ bool psi_decl_extvar_validate(struct psi_data *data, return true; } -void psi_decl_extvar_dump(int fd, struct psi_decl_extvar *evar) +void psi_decl_extvar_dump(struct psi_dump *dump, struct psi_decl_extvar *evar) { - dprintf(fd, "extern "); - psi_decl_arg_dump(fd, evar->arg, 0); - dprintf(fd, ";\n"); + PSI_DUMP(dump, "extern "); + psi_decl_arg_dump(dump, evar->arg, 0); + PSI_DUMP(dump, ";\n"); } struct psi_decl *psi_decl_extvar_setter(struct psi_decl_extvar *evar) { - zend_string *type_str = zend_string_init_interned(ZEND_STRS("void"), 1); + zend_string *type_str = psi_string_init_interned(ZEND_STRS("void"), 1); struct psi_decl_type *func_type = psi_decl_type_init(PSI_T_VOID, type_str); struct psi_decl_var *func_var = psi_decl_var_copy(evar->arg->var); struct psi_decl_arg *func = psi_decl_arg_init(func_type, func_var); @@ -119,7 +123,7 @@ struct psi_decl *psi_decl_extvar_setter(struct psi_decl_extvar *evar) smart_str_append_ex(&name, func_var->name, 1); smart_str_appendl_ex(&name, ZEND_STRL("_set"), 1); zend_string_release(func_var->name); - func_var->name = zend_new_interned_string(smart_str_extract(&name)); + func_var->name = psi_new_interned_string(smart_str_extract(&name)); decl->extvar = 1; @@ -142,7 +146,7 @@ struct psi_decl *psi_decl_extvar_getter(struct psi_decl_extvar *evar) smart_str_append_ex(&name, func_var->name, 1); smart_str_appendl_ex(&name, ZEND_STRL("_get"), 1); zend_string_release(func_var->name); - func_var->name = zend_new_interned_string(smart_str_extract(&name)); + func_var->name = psi_new_interned_string(smart_str_extract(&name)); decl->extvar = 1; @@ -151,7 +155,12 @@ struct psi_decl *psi_decl_extvar_getter(struct psi_decl_extvar *evar) void psi_decl_extvar_get(struct psi_decl_extvar *evar, void *ptr) { - memcpy(ptr, evar->sym, evar->size); + if (evar->arg->var->array_size) { + /* arrays are passed as pointer */ + *(void **) ptr = evar->sym; + } else { + memcpy(ptr, evar->sym, evar->size); + } }