View | Details | Raw Unified | Return to issue 77422
Collapse All | Expand All

(-)source/uno/EnvStack.cxx (-8 / +15 lines)
Lines 228-243 static int s_getNextEnv(uno_Environment Link Here
228
extern "C" { static void s_pull(va_list param)
228
extern "C" { static void s_pull(va_list param)
229
{
229
{
230
	uno_EnvCallee * pCallee = va_arg(param, uno_EnvCallee *);
230
	uno_EnvCallee * pCallee = va_arg(param, uno_EnvCallee *);
231
       va_list       * xparam  = va_arg(param, va_list *);
231
#if defined(__GNUC__) && defined(X86_64)
232
232
    typeof(param[0]) * xparam  = va_arg(param, typeof(param[0]) *);
233
       pCallee(*xparam);
233
#else
234
    va_list xparam  = va_arg(param, va_list);
235
#endif
236
    pCallee(xparam);
234
}}
237
}}
235
238
236
static void s_callInto_v(uno_Environment * pEnv, uno_EnvCallee * pCallee, va_list param)
239
static void s_callInto_v(uno_Environment * pEnv, uno_EnvCallee * pCallee, va_list param)
237
{
240
{
238
	cppu::Enterable * pEnterable = reinterpret_cast<cppu::Enterable *>(pEnv->pReserved);
241
	cppu::Enterable * pEnterable = reinterpret_cast<cppu::Enterable *>(pEnv->pReserved);
239
	if (pEnterable)
242
	if (pEnterable)
240
               pEnterable->callInto(s_pull, pCallee, &param);
243
		pEnterable->callInto(s_pull, pCallee, param);
241
				
244
				
242
	else
245
	else
243
		pCallee(param);
246
		pCallee(param);
Lines 278-286 extern "C" { static void s_environment_i Link Here
278
	uno_Environment * pCurrEnv    = va_arg(param, uno_Environment *);
281
	uno_Environment * pCurrEnv    = va_arg(param, uno_Environment *);
279
	uno_Environment * pTargetEnv  = va_arg(param, uno_Environment *);
282
	uno_Environment * pTargetEnv  = va_arg(param, uno_Environment *);
280
	uno_EnvCallee   * pCallee = va_arg(param, uno_EnvCallee *);
283
	uno_EnvCallee   * pCallee = va_arg(param, uno_EnvCallee *);
281
       va_list         *  xparam  = va_arg(param, va_list *);
284
#if defined(__GNUC__) && defined(X86_64)
285
    typeof(param[0]) * xparam  = va_arg(param, typeof(param[0]) *);
286
#else
287
    va_list xparam  = va_arg(param, va_list);
288
#endif
282
289
283
       s_environment_invoke_v(pCurrEnv, pTargetEnv, pCallee, *xparam);
290
    s_environment_invoke_v(pCurrEnv, pTargetEnv, pCallee, xparam);
284
}}
291
}}
285
292
286
static void s_environment_invoke_v(uno_Environment * pCurrEnv, uno_Environment * pTargetEnv, uno_EnvCallee * pCallee, va_list param)
293
static void s_environment_invoke_v(uno_Environment * pCurrEnv, uno_Environment * pTargetEnv, uno_EnvCallee * pCallee, va_list param)
Lines 290-296 static void s_environment_invoke_v(uno_E Link Here
290
	{
297
	{
291
	case -1:
298
	case -1:
292
		s_setCurrent(pNextEnv);
299
		s_setCurrent(pNextEnv);
293
               s_callOut(pCurrEnv, s_environment_invoke_vv, pNextEnv, pTargetEnv, pCallee, &param);
300
		s_callOut(pCurrEnv, s_environment_invoke_vv, pNextEnv, pTargetEnv, pCallee, param);
294
		s_setCurrent(pCurrEnv);
301
		s_setCurrent(pCurrEnv);
295
		break;
302
		break;
296
303
Lines 304-310 static void s_environment_invoke_v(uno_E Link Here
304
311
305
	case 1:
312
	case 1:
306
		s_setCurrent(pNextEnv);
313
		s_setCurrent(pNextEnv);
307
               s_callInto(pNextEnv, s_environment_invoke_vv, pNextEnv, pTargetEnv, pCallee, &param);
314
		s_callInto(pNextEnv, s_environment_invoke_vv, pNextEnv, pTargetEnv, pCallee, param);
308
		s_setCurrent(pCurrEnv);
315
		s_setCurrent(pCurrEnv);
309
		break;
316
		break;
310
	}
317
	}

Return to issue 77422