From 9fab263d397cfd61c6940b049fadcc5906f3cd74 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Wed, 3 Feb 2010 16:57:00 +0100 Subject: [PATCH] msi: Call Custom function via wrapper. --- dlls/msi/custom.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/dlls/msi/custom.c b/dlls/msi/custom.c index 508bf6b2b4d..2b2a3e1373f 100644 --- a/dlls/msi/custom.c +++ b/dlls/msi/custom.c @@ -647,6 +647,28 @@ static UINT get_action_info( const GUID *guid, INT *type, MSIHANDLE *handle, return ERROR_SUCCESS; } +#ifdef __i386__ +extern UINT CUSTOMPROC_wrapper( MsiCustomActionEntryPoint proc, MSIHANDLE handle ); +__ASM_GLOBAL_FUNC( CUSTOMPROC_wrapper, + "pushl %ebp\n\t" + __ASM_CFI(".cfi_adjust_cfa_offset 4\n\t") + __ASM_CFI(".cfi_rel_offset %ebp,0\n\t") + "movl %esp,%ebp\n\t" + __ASM_CFI(".cfi_def_cfa_register %ebp\n\t") + "pushl 12(%ebp)\n\t" + "movl 8(%ebp),%eax\n\t" + "call *%eax\n\t" + "leave\n\t" + __ASM_CFI(".cfi_def_cfa %esp,4\n\t") + __ASM_CFI(".cfi_same_value %ebp\n\t") + "ret" ) +#else +static inline UINT CUSTOMPROC_wrapper( MsiCustomActionEntryPoint proc, MSIHANDLE handle ) +{ + return proc(handle); +} +#endif + static DWORD ACTION_CallDllFunction( const GUID *guid ) { MsiCustomActionEntryPoint fn; @@ -685,7 +707,7 @@ static DWORD ACTION_CallDllFunction( const GUID *guid ) __TRY { - r = fn( hPackage ); + r = CUSTOMPROC_wrapper( fn, hPackage ); } __EXCEPT_PAGE_FAULT { -- 2.11.4.GIT