Author: akhaldi
Date: Sat Mar 23 10:35:27 2013
New Revision: 58586
URL:
http://svn.reactos.org/svn/reactos?rev=58586&view=rev
Log:
[OLE32]
* Sync with Wine 1.5.26.
Modified:
trunk/reactos/dll/win32/ole32/compobj.c
trunk/reactos/dll/win32/ole32/compositemoniker.c
trunk/reactos/dll/win32/ole32/defaulthandler.c
trunk/reactos/dll/win32/ole32/moniker.c
trunk/reactos/dll/win32/ole32/ole2.c
trunk/reactos/dll/win32/ole32/pointermoniker.c
trunk/reactos/dll/win32/ole32/rpc.c
trunk/reactos/dll/win32/ole32/storage32.c
trunk/reactos/dll/win32/ole32/usrmarshal.c
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/ole32/compobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/compobj.c?…
==============================================================================
--- trunk/reactos/dll/win32/ole32/compobj.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/compobj.c [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -818,14 +818,17 @@
real_delay = 0;
}
- if (!real_delay || (entry->unload_time && (entry->unload_time
< GetTickCount())))
+ if (!real_delay || (entry->unload_time && ((int)(GetTickCount() -
entry->unload_time) > 0)))
{
list_remove(&entry->entry);
COMPOBJ_DllList_ReleaseRef(entry->dll, TRUE);
HeapFree(GetProcessHeap(), 0, entry);
}
else
+ {
entry->unload_time = GetTickCount() + real_delay;
+ if (!entry->unload_time) entry->unload_time = 1;
+ }
}
else if (entry->unload_time)
entry->unload_time = 0;
@@ -2035,8 +2038,11 @@
*ppszProgID = CoTaskMemAlloc(progidlen * sizeof(WCHAR));
if (*ppszProgID)
{
- if (RegQueryValueW(hkey, NULL, *ppszProgID, &progidlen))
+ if (RegQueryValueW(hkey, NULL, *ppszProgID, &progidlen)) {
ret = REGDB_E_CLASSNOTREG;
+ CoTaskMemFree(*ppszProgID);
+ *ppszProgID = NULL;
+ }
}
else
ret = E_OUTOFMEMORY;
@@ -2732,83 +2738,82 @@
* CoGetClassObject()
*/
HRESULT WINAPI CoCreateInstance(
- REFCLSID rclsid,
- LPUNKNOWN pUnkOuter,
- DWORD dwClsContext,
- REFIID iid,
- LPVOID *ppv)
-{
- HRESULT hres;
- LPCLASSFACTORY lpclf = 0;
- APARTMENT *apt;
-
- TRACE("(rclsid=%s, pUnkOuter=%p, dwClsContext=%08x, riid=%s, ppv=%p)\n",
debugstr_guid(rclsid),
- pUnkOuter, dwClsContext, debugstr_guid(iid), ppv);
-
- /*
- * Sanity check
- */
- if (ppv==0)
- return E_POINTER;
-
- /*
- * Initialize the "out" parameter
- */
- *ppv = 0;
-
- if (!(apt = COM_CurrentApt()))
- {
- if (!(apt = apartment_find_multi_threaded()))
- {
- ERR("apartment not initialised\n");
- return CO_E_NOTINITIALIZED;
- }
- apartment_release(apt);
- }
-
- /*
- * The Standard Global Interface Table (GIT) object is a process-wide singleton.
- * Rather than create a class factory, we can just check for it here
- */
- if (IsEqualIID(rclsid, &CLSID_StdGlobalInterfaceTable)) {
- if (StdGlobalInterfaceTableInstance == NULL)
- StdGlobalInterfaceTableInstance = StdGlobalInterfaceTable_Construct();
- hres = IGlobalInterfaceTable_QueryInterface( (IGlobalInterfaceTable*)
StdGlobalInterfaceTableInstance, iid, ppv);
- if (hres) return hres;
-
- TRACE("Retrieved GIT (%p)\n", *ppv);
- return S_OK;
- }
-
- if (IsEqualCLSID(rclsid, &CLSID_ManualResetEvent))
- return ManualResetEvent_Construct(pUnkOuter, iid, ppv);
-
- /*
- * Get a class factory to construct the object we want.
- */
- hres = CoGetClassObject(rclsid,
- dwClsContext,
- NULL,
- &IID_IClassFactory,
- (LPVOID)&lpclf);
-
- if (FAILED(hres))
+ REFCLSID rclsid,
+ LPUNKNOWN pUnkOuter,
+ DWORD dwClsContext,
+ REFIID iid,
+ LPVOID *ppv)
+{
+ HRESULT hres;
+ LPCLASSFACTORY lpclf = 0;
+ APARTMENT *apt;
+
+ TRACE("(rclsid=%s, pUnkOuter=%p, dwClsContext=%08x, riid=%s, ppv=%p)\n",
debugstr_guid(rclsid),
+ pUnkOuter, dwClsContext, debugstr_guid(iid), ppv);
+
+ if (ppv==0)
+ return E_POINTER;
+
+ *ppv = 0;
+
+ if (!(apt = COM_CurrentApt()))
+ {
+ if (!(apt = apartment_find_multi_threaded()))
+ {
+ ERR("apartment not initialised\n");
+ return CO_E_NOTINITIALIZED;
+ }
+ apartment_release(apt);
+ }
+
+ /*
+ * The Standard Global Interface Table (GIT) object is a process-wide singleton.
+ * Rather than create a class factory, we can just check for it here
+ */
+ if (IsEqualIID(rclsid, &CLSID_StdGlobalInterfaceTable))
+ {
+ if (StdGlobalInterfaceTableInstance == NULL)
+ StdGlobalInterfaceTableInstance = StdGlobalInterfaceTable_Construct();
+ hres =
IGlobalInterfaceTable_QueryInterface((IGlobalInterfaceTable*)StdGlobalInterfaceTableInstance,
+ iid,
+ ppv);
+ if (hres) return hres;
+
+ TRACE("Retrieved GIT (%p)\n", *ppv);
+ return S_OK;
+ }
+
+ if (IsEqualCLSID(rclsid, &CLSID_ManualResetEvent))
+ return ManualResetEvent_Construct(pUnkOuter, iid, ppv);
+
+ /*
+ * Get a class factory to construct the object we want.
+ */
+ hres = CoGetClassObject(rclsid,
+ dwClsContext,
+ NULL,
+ &IID_IClassFactory,
+ (LPVOID)&lpclf);
+
+ if (FAILED(hres))
+ return hres;
+
+ /*
+ * Create the object and don't forget to release the factory
+ */
+ hres = IClassFactory_CreateInstance(lpclf, pUnkOuter, iid, ppv);
+ IClassFactory_Release(lpclf);
+ if (FAILED(hres))
+ {
+ if (hres == CLASS_E_NOAGGREGATION && pUnkOuter)
+ FIXME("Class %s does not support aggregation\n",
debugstr_guid(rclsid));
+ else
+ FIXME("no instance created for interface %s of class %s, hres is
0x%08x\n",
+ debugstr_guid(iid),
+ debugstr_guid(rclsid),hres);
+ }
+
return hres;
-
- /*
- * Create the object and don't forget to release the factory
- */
- hres = IClassFactory_CreateInstance(lpclf, pUnkOuter, iid, ppv);
- IClassFactory_Release(lpclf);
- if(FAILED(hres))
- {
- if (hres == CLASS_E_NOAGGREGATION && pUnkOuter)
- FIXME("Class %s does not support aggregation\n",
debugstr_guid(rclsid));
- else
- FIXME("no instance created for interface %s of class %s, hres is
0x%08x\n", debugstr_guid(iid), debugstr_guid(rclsid),hres);
- }
-
- return hres;
}
/***********************************************************************
@@ -3876,6 +3881,7 @@
if (res == WAIT_OBJECT_0 + cHandles) /* messages available */
{
MSG msg;
+ int count = 0;
/* call message filter */
@@ -3905,7 +3911,9 @@
}
}
- while (COM_PeekMessage(apt, &msg))
+ /* some apps (e.g. Visio 2010) don't handle WM_PAINT properly and
loop forever,
+ * so after processing 100 messages we go back to checking the wait
handles */
+ while (count++ < 100 && COM_PeekMessage(apt, &msg))
{
TRACE("received message whilst waiting for RPC: 0x%04x\n",
msg.message);
TranslateMessage(&msg);
Modified: trunk/reactos/dll/win32/ole32/compositemoniker.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/compositem…
==============================================================================
--- trunk/reactos/dll/win32/ole32/compositemoniker.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/compositemoniker.c [iso-8859-1] Sat Mar 23 10:35:27
2013
@@ -1641,10 +1641,10 @@
******************************************************************************/
static HRESULT
EnumMonikerImpl_CreateEnumMoniker(IMoniker** tabMoniker, ULONG tabSize,
- ULONG currentPos, BOOL leftToRigth, IEnumMoniker ** ppmk)
+ ULONG currentPos, BOOL leftToRight, IEnumMoniker ** ppmk)
{
EnumMonikerImpl* newEnumMoniker;
- int i;
+ ULONG i;
if (currentPos > tabSize)
return E_INVALIDARG;
@@ -1668,17 +1668,17 @@
return E_OUTOFMEMORY;
}
- if (leftToRigth)
+ if (leftToRight)
for (i=0;i<tabSize;i++){
newEnumMoniker->tabMoniker[i]=tabMoniker[i];
IMoniker_AddRef(tabMoniker[i]);
}
else
- for (i=tabSize-1;i>=0;i--){
-
- newEnumMoniker->tabMoniker[tabSize-i-1]=tabMoniker[i];
- IMoniker_AddRef(tabMoniker[i]);
+ for (i = tabSize; i > 0; i--){
+
+ newEnumMoniker->tabMoniker[tabSize-i]=tabMoniker[i - 1];
+ IMoniker_AddRef(tabMoniker[i - 1]);
}
*ppmk=&newEnumMoniker->IEnumMoniker_iface;
Modified: trunk/reactos/dll/win32/ole32/defaulthandler.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/defaulthan…
==============================================================================
--- trunk/reactos/dll/win32/ole32/defaulthandler.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/defaulthandler.c [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -1325,7 +1325,7 @@
release_delegates(This);
- hr = CoCreateInstance(&This->clsid, NULL, CLSCTX_ALL,
+ hr = CoCreateInstance(&This->clsid, NULL, CLSCTX_LOCAL_SERVER |
CLSCTX_REMOTE_SERVER,
&IID_IOleObject, (void **)&This->pOleDelegate);
if (FAILED(hr))
return hr;
Modified: trunk/reactos/dll/win32/ole32/moniker.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/moniker.c?…
==============================================================================
--- trunk/reactos/dll/win32/ole32/moniker.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/moniker.c [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -149,7 +149,7 @@
strcatW( cmd, rpcss );
Wow64DisableWow64FsRedirection( &redir );
- rslt = CreateProcessW( cmd, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi
);
+ rslt = CreateProcessW( cmd, cmd, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL,
&si, &pi );
Wow64RevertWow64FsRedirection( redir );
if (rslt)
Modified: trunk/reactos/dll/win32/ole32/ole2.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/ole2.c?rev…
==============================================================================
--- trunk/reactos/dll/win32/ole32/ole2.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/ole2.c [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -1880,11 +1880,11 @@
* Destroy the shared menu descriptor
*/
HRESULT WINAPI OleDestroyMenuDescriptor(
- HOLEMENU hmenuDescriptor)
-{
- if ( hmenuDescriptor )
- GlobalFree( hmenuDescriptor );
- return S_OK;
+ HOLEMENU hmenuDescriptor)
+{
+ if ( hmenuDescriptor )
+ GlobalFree( hmenuDescriptor );
+ return S_OK;
}
/***********************************************************************
@@ -1908,72 +1908,73 @@
* these are non null.
*/
HRESULT WINAPI OleSetMenuDescriptor(
- HOLEMENU hOleMenu,
- HWND hwndFrame,
- HWND hwndActiveObject,
- LPOLEINPLACEFRAME lpFrame,
- LPOLEINPLACEACTIVEOBJECT lpActiveObject)
-{
- OleMenuDescriptor *pOleMenuDescriptor = NULL;
-
- /* Check args */
- if ( !hwndFrame || (hOleMenu && !hwndActiveObject) )
- return E_INVALIDARG;
-
- if ( lpFrame || lpActiveObject )
- {
- FIXME("(%p, %p, %p, %p, %p), Context sensitive help filtering not
implemented!\n",
- hOleMenu,
- hwndFrame,
- hwndActiveObject,
- lpFrame,
- lpActiveObject);
- }
-
- /* Set up a message hook to intercept the containers frame window messages.
- * The message filter is responsible for dispatching menu messages from the
- * shared menu which are intended for the object.
- */
-
- if ( hOleMenu ) /* Want to install dispatching code */
- {
- /* If OLEMenu hooks are already installed for this thread, fail
- * Note: This effectively means that OleSetMenuDescriptor cannot
- * be called twice in succession on the same frame window
- * without first calling it with a null hOleMenu to uninstall */
- if ( OLEMenu_IsHookInstalled( GetCurrentThreadId() ) )
- return E_FAIL;
-
- /* Get the menu descriptor */
- pOleMenuDescriptor = GlobalLock( hOleMenu );
- if ( !pOleMenuDescriptor )
- return E_UNEXPECTED;
-
- /* Update the menu descriptor */
- pOleMenuDescriptor->hwndFrame = hwndFrame;
- pOleMenuDescriptor->hwndActiveObject = hwndActiveObject;
-
- GlobalUnlock( hOleMenu );
- pOleMenuDescriptor = NULL;
-
- /* Add a menu descriptor windows property to the frame window */
- SetPropW( hwndFrame, prop_olemenuW, hOleMenu );
-
- /* Install thread scope message hooks for WH_GETMESSAGE and WH_CALLWNDPROC */
- if ( !OLEMenu_InstallHooks( GetCurrentThreadId() ) )
- return E_FAIL;
- }
- else /* Want to uninstall dispatching code */
- {
- /* Uninstall the hooks */
- if ( !OLEMenu_UnInstallHooks( GetCurrentThreadId() ) )
- return E_FAIL;
-
- /* Remove the menu descriptor property from the frame window */
- RemovePropW( hwndFrame, prop_olemenuW );
- }
-
- return S_OK;
+ HOLEMENU hOleMenu,
+ HWND hwndFrame,
+ HWND hwndActiveObject,
+ LPOLEINPLACEFRAME lpFrame,
+ LPOLEINPLACEACTIVEOBJECT lpActiveObject)
+{
+ OleMenuDescriptor *pOleMenuDescriptor = NULL;
+
+ /* Check args */
+ if ( !hwndFrame || (hOleMenu && !hwndActiveObject) )
+ return E_INVALIDARG;
+
+ if ( lpFrame || lpActiveObject )
+ {
+ FIXME("(%p, %p, %p, %p, %p), Context sensitive help filtering not
implemented!\n",
+ hOleMenu,
+ hwndFrame,
+ hwndActiveObject,
+ lpFrame,
+ lpActiveObject);
+ }
+
+ /* Set up a message hook to intercept the containers frame window messages.
+ * The message filter is responsible for dispatching menu messages from the
+ * shared menu which are intended for the object.
+ */
+
+ if ( hOleMenu ) /* Want to install dispatching code */
+ {
+ /* If OLEMenu hooks are already installed for this thread, fail
+ * Note: This effectively means that OleSetMenuDescriptor cannot
+ * be called twice in succession on the same frame window
+ * without first calling it with a null hOleMenu to uninstall
+ */
+ if ( OLEMenu_IsHookInstalled( GetCurrentThreadId() ) )
+ return E_FAIL;
+
+ /* Get the menu descriptor */
+ pOleMenuDescriptor = GlobalLock( hOleMenu );
+ if ( !pOleMenuDescriptor )
+ return E_UNEXPECTED;
+
+ /* Update the menu descriptor */
+ pOleMenuDescriptor->hwndFrame = hwndFrame;
+ pOleMenuDescriptor->hwndActiveObject = hwndActiveObject;
+
+ GlobalUnlock( hOleMenu );
+ pOleMenuDescriptor = NULL;
+
+ /* Add a menu descriptor windows property to the frame window */
+ SetPropW( hwndFrame, prop_olemenuW, hOleMenu );
+
+ /* Install thread scope message hooks for WH_GETMESSAGE and WH_CALLWNDPROC */
+ if ( !OLEMenu_InstallHooks( GetCurrentThreadId() ) )
+ return E_FAIL;
+ }
+ else /* Want to uninstall dispatching code */
+ {
+ /* Uninstall the hooks */
+ if ( !OLEMenu_UnInstallHooks( GetCurrentThreadId() ) )
+ return E_FAIL;
+
+ /* Remove the menu descriptor property from the frame window */
+ RemovePropW( hwndFrame, prop_olemenuW );
+ }
+
+ return S_OK;
}
/******************************************************************************
Modified: trunk/reactos/dll/win32/ole32/pointermoniker.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/pointermon…
==============================================================================
--- trunk/reactos/dll/win32/ole32/pointermoniker.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/pointermoniker.c [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -632,7 +632,7 @@
if (FAILED(hr))
return hr;
- hr = IMoniker_QueryInterface(pMoniker, riid, ppv);
+ hr = IMoniker_QueryInterface(pMoniker, riid, ppv);
if (FAILED(hr))
IMoniker_Release(pMoniker);
Modified: trunk/reactos/dll/win32/ole32/rpc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/rpc.c?rev=…
==============================================================================
--- trunk/reactos/dll/win32/ole32/rpc.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/rpc.c [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -1683,7 +1683,7 @@
/* FIXME: Win2003 supports a ServerExecutable value that is passed into
* CreateProcess */
- if (!CreateProcessW(NULL, command, NULL, NULL, FALSE, 0, NULL, NULL, &sinfo,
&pinfo)) {
+ if (!CreateProcessW(NULL, command, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL,
&sinfo, &pinfo)) {
WARN("failed to run local server %s\n", debugstr_w(command));
return HRESULT_FROM_WIN32(GetLastError());
}
@@ -1880,7 +1880,7 @@
{
CLSID clsid;
IStream *stream;
- HANDLE ready_event;
+ HANDLE pipe;
HANDLE stop_event;
HANDLE thread;
BOOL multi_use;
@@ -1901,7 +1901,7 @@
ULONG res;
BOOL multi_use = lsp->multi_use;
OVERLAPPED ovl;
- HANDLE pipe_event, hPipe, new_pipe;
+ HANDLE pipe_event, hPipe = lsp->pipe, new_pipe;
DWORD bytes;
TRACE("Starting threader for %s.\n",debugstr_guid(&lsp->clsid));
@@ -1909,18 +1909,6 @@
memset(&ovl, 0, sizeof(ovl));
get_localserver_pipe_name(pipefn, &lsp->clsid);
ovl.hEvent = pipe_event = CreateEventW(NULL, FALSE, FALSE, NULL);
-
- hPipe = CreateNamedPipeW( pipefn, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
- PIPE_TYPE_BYTE|PIPE_WAIT, PIPE_UNLIMITED_INSTANCES,
- 4096, 4096, 500 /* 0.5 second timeout */, NULL );
- if (hPipe == INVALID_HANDLE_VALUE)
- {
- FIXME("pipe creation failed for %s, le is %u\n", debugstr_w(pipefn),
GetLastError());
- CloseHandle(pipe_event);
- return 1;
- }
-
- SetEvent(lsp->ready_event);
while (1) {
if (!ConnectNamedPipe(hPipe, &ovl))
@@ -2011,8 +1999,9 @@
/* starts listening for a local server */
HRESULT RPC_StartLocalServer(REFCLSID clsid, IStream *stream, BOOL multi_use, void
**registration)
{
- DWORD tid;
+ DWORD tid, err;
struct local_server_params *lsp;
+ WCHAR pipefn[100];
lsp = HeapAlloc(GetProcessHeap(), 0, sizeof(*lsp));
if (!lsp)
@@ -2021,33 +2010,35 @@
lsp->clsid = *clsid;
lsp->stream = stream;
IStream_AddRef(stream);
- lsp->ready_event = CreateEventW(NULL, FALSE, FALSE, NULL);
- if (!lsp->ready_event)
+ lsp->stop_event = CreateEventW(NULL, FALSE, FALSE, NULL);
+ if (!lsp->stop_event)
{
HeapFree(GetProcessHeap(), 0, lsp);
return HRESULT_FROM_WIN32(GetLastError());
}
- lsp->stop_event = CreateEventW(NULL, FALSE, FALSE, NULL);
- if (!lsp->stop_event)
- {
- CloseHandle(lsp->ready_event);
+ lsp->multi_use = multi_use;
+
+ get_localserver_pipe_name(pipefn, &lsp->clsid);
+ lsp->pipe = CreateNamedPipeW(pipefn, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
+ PIPE_TYPE_BYTE|PIPE_WAIT, PIPE_UNLIMITED_INSTANCES,
+ 4096, 4096, 500 /* 0.5 second timeout */, NULL);
+ if (lsp->pipe == INVALID_HANDLE_VALUE)
+ {
+ err = GetLastError();
+ FIXME("pipe creation failed for %s, le is %u\n", debugstr_w(pipefn),
GetLastError());
+ CloseHandle(lsp->stop_event);
HeapFree(GetProcessHeap(), 0, lsp);
- return HRESULT_FROM_WIN32(GetLastError());
- }
- lsp->multi_use = multi_use;
+ return HRESULT_FROM_WIN32(err);
+ }
lsp->thread = CreateThread(NULL, 0, local_server_thread, lsp, 0, &tid);
if (!lsp->thread)
{
- CloseHandle(lsp->ready_event);
+ CloseHandle(lsp->pipe);
CloseHandle(lsp->stop_event);
HeapFree(GetProcessHeap(), 0, lsp);
return HRESULT_FROM_WIN32(GetLastError());
}
-
- WaitForSingleObject(lsp->ready_event, INFINITE);
- CloseHandle(lsp->ready_event);
- lsp->ready_event = NULL;
*registration = lsp;
return S_OK;
Modified: trunk/reactos/dll/win32/ole32/storage32.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/storage32.…
==============================================================================
--- trunk/reactos/dll/win32/ole32/storage32.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/storage32.c [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -1767,7 +1767,7 @@
StorageBaseImpl *This = impl_from_IStorage(iface);
BOOL skip_storage = FALSE, skip_stream = FALSE;
- int i;
+ DWORD i;
TRACE("(%p, %d, %p, %p, %p)\n",
iface, ciidExclude, rgiidExclude,
@@ -2822,7 +2822,7 @@
{
ULONG current_block = This->extBigBlockDepotStart;
ULONG cache_size = This->extBigBlockDepotCount * 2;
- int i;
+ ULONG i;
This->extBigBlockDepotLocations = HeapAlloc(GetProcessHeap(), 0, sizeof(ULONG) *
cache_size);
if (!This->extBigBlockDepotLocations)
Modified: trunk/reactos/dll/win32/ole32/usrmarshal.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/usrmarshal…
==============================================================================
--- trunk/reactos/dll/win32/ole32/usrmarshal.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/ole32/usrmarshal.c [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -2360,8 +2360,8 @@
REFIID riid,
void **ppvObj)
{
- FIXME(":stub\n");
- return E_NOTIMPL;
+ TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft,
debugstr_guid(riid), ppvObj);
+ return IMoniker_RemoteBindToStorage_Proxy(This, pbc, pmkToLeft, riid,
(IUnknown**)ppvObj);
}
HRESULT __RPC_STUB IMoniker_BindToStorage_Stub(
@@ -2371,8 +2371,8 @@
REFIID riid,
IUnknown **ppvObj)
{
- FIXME(":stub\n");
- return E_NOTIMPL;
+ TRACE("(%p)->(%p %p %s %p)\n", This, pbc, pmkToLeft,
debugstr_guid(riid), ppvObj);
+ return IMoniker_BindToStorage(This, pbc, pmkToLeft, riid, (void**)ppvObj);
}
HRESULT CALLBACK IEnumString_Next_Proxy(
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Mar 23 10:35:27 2013
@@ -130,7 +130,7 @@
reactos/dll/win32/objsel # Synced to Wine-1.5.19
reactos/dll/win32/odbc32 # Out of sync. Depends on port of Linux ODBC.
reactos/dll/win32/odbccp32 # Synced to Wine-1.5.19
-reactos/dll/win32/ole32 # Synced to Wine-1.5.19
+reactos/dll/win32/ole32 # Synced to Wine-1.5.26
reactos/dll/win32/oleacc # Autosync
reactos/dll/win32/oleaut32 # Synced to Wine-1.5.19
reactos/dll/win32/olecli32 # Synced to Wine-1.5.19