1.1 --- a/core/systems/CFunction.cpp Sun Nov 12 00:40:58 2006 +0000
1.2 +++ b/core/systems/CFunction.cpp Sun Nov 12 01:06:17 2006 +0000
1.3 @@ -106,7 +106,7 @@
1.4 return SetError(err);
1.5 }
1.6
1.7 - info->flags = inarray ? copyback : SMFUNC_COPYBACK_NONE;
1.8 + info->flags = (inarray || (copyback & SMFUNC_COPYBACK_ALWAYS)) ? copyback : SMFUNC_COPYBACK_NONE;
1.9 info->marked = true;
1.10 info->size = cells;
1.11 m_params[m_curparam] = info->local_addr;
1.12 @@ -246,9 +246,14 @@
1.13 }
1.14 if (temp_info[numparams].orig_addr)
1.15 {
1.16 - memcpy(temp_info[numparams].orig_addr,
1.17 - temp_info[numparams].phys_addr,
1.18 - temp_info[numparams].size * sizeof(cell_t));
1.19 + if (temp_info[numparams].size == 1)
1.20 + {
1.21 + *temp_info[numparams].orig_addr = *temp_info[numparams].phys_addr;
1.22 + } else {
1.23 + memcpy(temp_info[numparams].orig_addr,
1.24 + temp_info[numparams].phys_addr,
1.25 + temp_info[numparams].size * sizeof(cell_t));
1.26 + }
1.27 }
1.28 }
1.29 _skipcopy: