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];