advpack: Only do_ocx_reg (and thus DllRegisterServer) from RegisterOCX when 'N' is passed as a flag. Clarify documentation.
James Hawkins
truiken at gmail.com
Tue May 11 17:17:31 CDT 2010
I'm very hesitant about this. MSDN has no documentation about
RegisterOCX, so I'm not sure how you're justifying this change. It's
been a long time since I worked on this, so I don't remember much, but
I do remember testing this method and documenting the parameters
correctly. Where are you getting information that 'I' is required
when using 'N'?
James
On Tue, May 11, 2010 at 1:24 PM, Gerald Pfeifer <gerald at pfeifer.com> wrote:
> This is my humble attempt of addressing Alexandre's feeback at
>
> http://www.winehq.org/pipermail/wine-devel/2010-May/083518.html
>
> It does pass testing for me, even on FreeBSD/i386, but I will say I did
> not find the MSDN documentation I located too helpful/clear, and may have
> been misled.
>
> As a next step we'd need to look into DllInstall. This change, hopefully,
> is a move in the right direction, though. If not, some guidance or one of
> the pros looking into it will be appreciated.
>
> Gerald
>
> ---
> dlls/advpack/advpack.c | 14 ++++++++++----
> 1 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/dlls/advpack/advpack.c b/dlls/advpack/advpack.c
> index 112d38a..f040ec6 100644
> --- a/dlls/advpack/advpack.c
> +++ b/dlls/advpack/advpack.c
> @@ -486,8 +486,10 @@ HRESULT do_ocx_reg(HMODULE hocx, BOOL do_reg)
> * NOTES
> * OCX - Filename of the OCX to register.
> * flags - Controls the operation of RegisterOCX.
> - * 'I' Call DllRegisterServer and DllInstall.
> - * 'N' Only call DllInstall.
> + * 'I' Call DllInstall and, unless 'N' is specified as well,
> + * DllRegisterServer.
> + * 'N' Do not call DllRegisterServer; only valid if 'I' is
> + * specified too.
> * param - Command line passed to DllInstall.
> */
> HRESULT WINAPI RegisterOCX(HWND hWnd, HINSTANCE hInst, LPCSTR cmdline, INT show)
> @@ -519,8 +521,12 @@ HRESULT WINAPI RegisterOCX(HWND hWnd, HINSTANCE hInst, LPCSTR cmdline, INT show)
> if (!hm)
> goto done;
>
> - hr = do_ocx_reg(hm, TRUE);
> -
> + if(strchrW(str_flags,'I'))
> + {
> + if (!strchrW(str_flags,'N'))
> + hr = do_ocx_reg(hm, TRUE);
> + }
> +
> done:
> FreeLibrary(hm);
> HeapFree(GetProcessHeap(), 0, cmdline_copy);
> --
> 1.6.6.2
>
>
>
More information about the wine-devel
mailing list