fix returning arrays
authorMichael Wallner <mike@php.net>
Wed, 28 Nov 2018 07:49:14 +0000 (08:49 +0100)
committerMichael Wallner <mike@php.net>
Tue, 4 Dec 2018 11:13:50 +0000 (12:13 +0100)
psi.d/time.psi
src/types/decl_extvar.c

index 716e17610bd5b8613671417d488018c6c1ec8685..c7f83d118d32c883066c4e5583251fa05ca624eb 100644 (file)
@@ -124,5 +124,5 @@ function psi\tzset() : void {
 }
 
 function psi\tzname() : array {
 }
 
 function psi\tzname() : array {
-       return tzname_get() as to_array(tzname_get, 2, to_string(*tzname_get));
+       return tzname_get() as to_array(*tzname_get, 2, to_string(*tzname_get));
 }
 }
index 446a28e9ff8ff52c6c0f0b9f321493d33574d6fe..24ff39a0284cce4b550af4a14865b16a30aa951d 100644 (file)
@@ -151,7 +151,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);
+       }
 }
 
 
 }