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 returning arrays
[m6w6/ext-psi]
/
src
/
types
/
decl_extvar.c
diff --git
a/src/types/decl_extvar.c
b/src/types/decl_extvar.c
index 24304544ec3d6c4aa47ebe56be9246ea002c9f11..24ff39a0284cce4b550af4a14865b16a30aa951d 100644
(file)
--- a/
src/types/decl_extvar.c
+++ b/
src/types/decl_extvar.c
@@
-91,11
+91,11
@@
bool psi_decl_extvar_validate(struct psi_data *data,
return true;
}
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)
}
struct psi_decl *psi_decl_extvar_setter(struct psi_decl_extvar *evar)
@@
-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);
+ }
}
}