core/systems/CFunction.cpp
changeset 180 fe406c5f2aeb
parent 177 d29ade52d953
child 181 1e1570518051
     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: