Mercurial > pub > dyncall > dyncall
comparison dyncallback/dyncall_args_x64.c @ 537:804df3409b51
- callback fix for non-trivial aggregate return values: allowing access to caller-reserved space user is supposed to copy non-triv object into
author | Tassilo Philipp |
---|---|
date | Sat, 23 Apr 2022 16:28:47 +0200 |
parents | c0df40c888ac |
children | 111236b31c75 |
comparison
equal
deleted
inserted
replaced
536:c0df40c888ac | 537:804df3409b51 |
---|---|
142 { | 142 { |
143 int i; | 143 int i; |
144 DCaggr *ag = *(args->aggrs++); | 144 DCaggr *ag = *(args->aggrs++); |
145 | 145 |
146 if(!ag) { | 146 if(!ag) { |
147 /* non-trivial aggr */ | 147 /* non-trivial aggr: all we can do is to provide the ptr to the output space, user has to make copy */ |
148 result->p = ret; | 148 result->p = args->reg_data.i[0]; |
149 return; | 149 return; |
150 } | 150 } |
151 | 151 |
152 if (args->aggr_return_register >= 0) { | 152 if (args->aggr_return_register >= 0) { |
153 DCpointer dest = (DCpointer) args->reg_data.i[args->aggr_return_register]; | 153 DCpointer dest = (DCpointer) args->reg_data.i[args->aggr_return_register]; |