Module: wine Branch: master Commit: ba3ceaa4b86e461c95a63fa8499ac4c23dd8649b URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba3ceaa4b86e461c95a63fa849...
Author: Rob Shearman rob@codeweavers.com Date: Fri Mar 9 09:47:43 2007 +0000
ole32: Fix cbStruct handling in IBindCtx:GetBindOptions.
---
dlls/ole32/bindctx.c | 10 +++++++--- dlls/ole32/tests/moniker.c | 1 - 2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/ole32/bindctx.c b/dlls/ole32/bindctx.c index dc25b25..464d02e 100644 --- a/dlls/ole32/bindctx.c +++ b/dlls/ole32/bindctx.c @@ -267,16 +267,20 @@ static HRESULT WINAPI BindCtxImpl_GetBindOptions(IBindCtx* iface,BIND_OPTS *pbindopts) { BindCtxImpl *This = (BindCtxImpl *)iface; + ULONG cbStruct;
TRACE("(%p,%p)\n",This,pbindopts);
if (pbindopts==NULL) return E_POINTER;
- if (pbindopts->cbStruct > sizeof(BIND_OPTS2)) - pbindopts->cbStruct = sizeof(BIND_OPTS2); + cbStruct = pbindopts->cbStruct; + if (cbStruct > sizeof(BIND_OPTS2)) + cbStruct = sizeof(BIND_OPTS2); + + memcpy(pbindopts, &This->bindOption2, cbStruct); + pbindopts->cbStruct = cbStruct;
- memcpy(pbindopts, &This->bindOption2, pbindopts->cbStruct); return S_OK; }
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c index cca2f67..6b8a35a 100644 --- a/dlls/ole32/tests/moniker.c +++ b/dlls/ole32/tests/moniker.c @@ -1466,7 +1466,6 @@ static void test_bind_context(void) bind_opts.cbStruct = sizeof(BIND_OPTS); hr = IBindCtx_GetBindOptions(pBindCtx, (BIND_OPTS *)&bind_opts); ok_ole_success(hr, "IBindCtx_GetBindOptions"); - todo_wine ok(bind_opts.cbStruct == sizeof(BIND_OPTS), "bind_opts.cbStruct was %d\n", bind_opts.cbStruct);
bind_opts.cbStruct = sizeof(bind_opts);