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 + ¶mBuf[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 - ¶mBuf[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,