extensions/sdktools/vcallbuilder.cpp
changeset 1086 d03711b9593f
parent 1065 11756fc9fb63
child 1135 1a04a48f0788
     1.1 --- a/extensions/sdktools/vcallbuilder.cpp	Mon Jul 09 16:14:16 2007 +0000
     1.2 +++ b/extensions/sdktools/vcallbuilder.cpp	Mon Jul 09 22:36:59 2007 +0000
     1.3 @@ -103,6 +103,34 @@
     1.4  		}
     1.5  	}
     1.6  
     1.7 +	/* Get parameter info */
     1.8 +	PassInfo paramBuf[32];
     1.9 +	size_t sizes[32];
    1.10 +	size_t normSize = 0;
    1.11 +	size_t extraSize = 0;
    1.12 +	for (unsigned int i=0; i<numParams; i++)
    1.13 +	{
    1.14 +		bool needs_extra;
    1.15 +		if ((size = ValveParamToBinParam(params[i].vtype, 
    1.16 +			params[i].type,
    1.17 +			params[i].flags,
    1.18 +			&paramBuf[i],
    1.19 +			needs_extra)) == 0)
    1.20 +		{
    1.21 +			delete vc;
    1.22 +			return NULL;
    1.23 +		}
    1.24 +		if (needs_extra)
    1.25 +		{
    1.26 +			sizes[i] = size;
    1.27 +		} else {
    1.28 +			sizes[i] = 0;
    1.29 +		}
    1.30 +		normSize += paramBuf[i].size;
    1.31 +		extraSize += sizes[i];
    1.32 +	}
    1.33 +
    1.34 +
    1.35  	/* Get thisinfo if needed */
    1.36  	ValvePassInfo thisbuf;
    1.37  	ValvePassInfo *thisinfo = NULL;
    1.38 @@ -130,37 +158,10 @@
    1.39  		}
    1.40  		thisinfo->encflags = 0;
    1.41  		thisinfo->offset = 0;
    1.42 -		vc->stackSize += sizeof(void *);
    1.43 +		normSize += sizeof(void *);
    1.44  		cv = CallConv_ThisCall;
    1.45  	}
    1.46  
    1.47 -	/* Get parameter info */
    1.48 -	PassInfo paramBuf[32];
    1.49 -	size_t sizes[32];
    1.50 -	size_t normSize = 0;
    1.51 -	size_t extraSize = 0;
    1.52 -	for (unsigned int i=0; i<numParams; i++)
    1.53 -	{
    1.54 -		bool needs_extra;
    1.55 -		if ((size = ValveParamToBinParam(params[i].vtype, 
    1.56 -			params[i].type,
    1.57 -			params[i].flags,
    1.58 -			&paramBuf[i],
    1.59 -			needs_extra)) == 0)
    1.60 -		{
    1.61 -			delete vc;
    1.62 -			return NULL;
    1.63 -		}
    1.64 -		if (needs_extra)
    1.65 -		{
    1.66 -			sizes[i] = size;
    1.67 -		} else {
    1.68 -			sizes[i] = 0;
    1.69 -		}
    1.70 -		normSize += paramBuf[i].size;
    1.71 -		extraSize += sizes[i];
    1.72 -	}
    1.73 -
    1.74  	/* Now we can try creating the call */
    1.75  	if ((vc->call = g_pBinTools->CreateCall(addr,
    1.76  		cv,