projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix build
[m6w6/ext-psi]
/
src
/
types
/
decl_extvar.c
diff --git
a/src/types/decl_extvar.c
b/src/types/decl_extvar.c
index 446a28e9ff8ff52c6c0f0b9f321493d33574d6fe..263a25a67f744e2c6b2d4a896881a21660da4973 100644
(file)
--- 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.
*******************************************************************************/
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 <fnmatch.h>
#include <Zend/zend_smart_str.h>
#include <fnmatch.h>
#include <Zend/zend_smart_str.h>
+#include "php_psi.h"
#include "data.h"
#include "data.h"
+#include "dl.h"
struct psi_decl_extvar *psi_decl_extvar_init(struct psi_decl_arg *arg)
{
struct psi_decl_extvar *psi_decl_extvar_init(struct psi_decl_arg *arg)
{
@@
-100,7
+104,7
@@
void psi_decl_extvar_dump(struct psi_dump *dump, struct psi_decl_extvar *evar)
struct psi_decl *psi_decl_extvar_setter(struct psi_decl_extvar *evar)
{
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);
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);
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;
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);
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;
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)
{
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);
+ }
}
}