[ros-diffs] [pschweitzer] 71145: [NTOSKRNL] In FsRtlAddBaseMcbEntry(), try to detect incompatible LBNs before altering mappings. This fixes a few tests failures CORE-11002

2016-04-11 Thread pschweitzer
Author: pschweitzer
Date: Mon Apr 11 20:29:35 2016
New Revision: 71145

URL: http://svn.reactos.org/svn/reactos?rev=71145=rev
Log:
[NTOSKRNL]
In FsRtlAddBaseMcbEntry(), try to detect incompatible LBNs before altering 
mappings.

This fixes a few tests failures

CORE-11002

Modified:
trunk/reactos/ntoskrnl/fsrtl/largemcb.c

Modified: trunk/reactos/ntoskrnl/fsrtl/largemcb.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/fsrtl/largemcb.c?rev=71145=71144=71145=diff
==
--- trunk/reactos/ntoskrnl/fsrtl/largemcb.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/fsrtl/largemcb.c [iso-8859-1] Mon Apr 11 
20:29:35 2016
@@ -135,10 +135,12 @@
  IN LONGLONG SectorCount)
 {
 BOOLEAN Result = TRUE;
+BOOLEAN IntResult;
 PBASE_MCB_INTERNAL Mcb = (PBASE_MCB_INTERNAL)OpaqueMcb;
 LARGE_MCB_MAPPING_ENTRY Node, NeedleRun;
 PLARGE_MCB_MAPPING_ENTRY LowerRun, HigherRun;
 BOOLEAN NewElement;
+LONGLONG IntLbn;
 
 DPRINT("FsRtlAddBaseMcbEntry(%p, %I64d, %I64d, %I64d)\n", OpaqueMcb, Vbn, 
Lbn, SectorCount);
 
@@ -152,6 +154,16 @@
 {
 Result = FALSE;
 goto quit;
+}
+
+IntResult = FsRtlLookupBaseMcbEntry(OpaqueMcb, Vbn, , NULL, NULL, 
NULL, NULL);
+if (IntResult)
+{
+if (IntLbn != -1 && IntLbn != Lbn)
+{
+Result = FALSE;
+goto quit;
+}
 }
 
 /* clean any possible previous entries in our range */




[ros-diffs] [mjansen] 71144: [SHELL32][SHELL32_WINETEST] Connect CDefViewDual to CDefView to fix crashes in the shelldispatch test ROSTESTS-209 - CDefViewDual::get_Application now returns a new CDefVi

2016-04-11 Thread mjansen
Author: mjansen
Date: Mon Apr 11 18:28:31 2016
New Revision: 71144

URL: http://svn.reactos.org/svn/reactos?rev=71144=rev
Log:
[SHELL32][SHELL32_WINETEST] Connect CDefViewDual to CDefView to fix crashes in 
the shelldispatch test ROSTESTS-209
- CDefViewDual::get_Application now returns a new CDefView to fix the winetest.
- Update CFolder, CFolderItem(s), CFolderItemVerb(s), CShell to use the new 
IDispatchImpl
- Enable the last two skipped testcases (test_ShellFolderViewDual, 
test_ShellWindows)

Modified:
trunk/reactos/dll/win32/shell32/CDefViewDual.cpp
trunk/reactos/dll/win32/shell32/CFolder.cpp
trunk/reactos/dll/win32/shell32/CFolder.h
trunk/reactos/dll/win32/shell32/CFolderItemVerbs.cpp
trunk/reactos/dll/win32/shell32/CFolderItemVerbs.h
trunk/reactos/dll/win32/shell32/CFolderItems.cpp
trunk/reactos/dll/win32/shell32/CFolderItems.h
trunk/reactos/dll/win32/shell32/CShell.cpp
trunk/reactos/dll/win32/shell32/CShell.h
trunk/reactos/dll/win32/shell32/wine/shell32_main.h
trunk/rostests/winetests/shell32/shelldispatch.c

Modified: trunk/reactos/dll/win32/shell32/CDefViewDual.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/CDefViewDual.cpp?rev=71144=71143=71144=diff
==
--- trunk/reactos/dll/win32/shell32/CDefViewDual.cpp[iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/CDefViewDual.cpp[iso-8859-1] Mon Apr 11 
18:28:31 2016
@@ -46,9 +46,8 @@
 virtual HRESULT STDMETHODCALLTYPE get_Application(IDispatch **app) 
override
 {
 if (!app) return E_INVALIDARG;
-*app = NULL;
-FIXME("CDefViewDual::get_Application is UNIMPLEMENTED (%p, %p)\n", 
this, app);
-return E_NOTIMPL;
+
+return CShell_Constructor(IID_IDispatch, (LPVOID*)app);
 }
 
 virtual HRESULT STDMETHODCALLTYPE get_Parent(IDispatch **parent) 
override

Modified: trunk/reactos/dll/win32/shell32/CFolder.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/CFolder.cpp?rev=71144=71143=71144=diff
==
--- trunk/reactos/dll/win32/shell32/CFolder.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/CFolder.cpp [iso-8859-1] Mon Apr 11 
18:28:31 2016
@@ -36,38 +36,30 @@
 m_idlist.Attach(idlist);
 }
 
-// *** IDispatch methods ***
-HRESULT STDMETHODCALLTYPE CFolder::GetTypeInfoCount(UINT *pctinfo)
+HRESULT CFolder::GetShellFolder(CComPtr& psfCurrent)
 {
-TRACE("(%p, %p)\n", this, pctinfo);
-return E_NOTIMPL;
+CComPtr psfDesktop;
+
+HRESULT hr = SHGetDesktopFolder();
+if (FAILED_UNEXPECTEDLY(hr))
+return hr;
+
+return psfDesktop->BindToObject(m_idlist, NULL, IID_PPV_ARG(IShellFolder, 
));
 }
-
-HRESULT STDMETHODCALLTYPE CFolder::GetTypeInfo(UINT iTInfo, LCID lcid, 
ITypeInfo **ppTInfo)
-{
-TRACE("(%p, %lu, %lu, %p)\n", this, iTInfo, lcid, ppTInfo);
-return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE CFolder::GetIDsOfNames(REFIID riid, LPOLESTR 
*rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
-{
-TRACE("(%p, %s, %p, %lu, %lu, %p)\n", this, wine_dbgstr_guid(), 
rgszNames, cNames, lcid, rgDispId);
-return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE CFolder::Invoke(DISPID dispIdMember, REFIID riid, 
LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO 
*pExcepInfo, UINT *puArgErr)
-{
-TRACE("(%p, %lu, %s, %lu, %lu, %p, %p, %p, %p)\n", this, dispIdMember, 
wine_dbgstr_guid(), lcid, (DWORD)wFlags,
-pDispParams, pVarResult, pExcepInfo, puArgErr);
-return E_NOTIMPL;
-}
-
 
 // *** Folder methods ***
 HRESULT STDMETHODCALLTYPE CFolder::get_Title(BSTR *pbs)
 {
-TRACE("(%p, %p)\n", this, pbs);
-return E_NOTIMPL;
+if (!pbs)
+return E_POINTER;
+
+WCHAR path[MAX_PATH+2] = {0};
+HRESULT hr = ILGetDisplayNameExW(NULL, m_idlist, path, ILGDN_INFOLDER);
+if (FAILED_UNEXPECTEDLY(hr))
+return hr;
+
+*pbs = SysAllocString(path);
+return S_OK;
 }
 
 HRESULT STDMETHODCALLTYPE CFolder::get_Application(IDispatch **ppid)
@@ -97,15 +89,12 @@
 HRESULT STDMETHODCALLTYPE CFolder::ParseName(BSTR bName, FolderItem **ppid)
 {
 TRACE("(%p, %s, %p)\n", this, wine_dbgstr_w(bName), ppid);
-
-CComPtr psfDesktop;
-
-HRESULT hr = SHGetDesktopFolder();
-if (FAILED_UNEXPECTEDLY(hr))
-return hr;
+if (!ppid)
+return E_POINTER;
+*ppid = NULL;
 
 CComPtr psfCurrent;
-hr = psfDesktop->BindToObject(m_idlist, NULL, IID_PPV_ARG(IShellFolder, 
));
+HRESULT hr = GetShellFolder(psfCurrent);
 if (FAILED_UNEXPECTEDLY(hr))
 return hr;
 

Modified: trunk/reactos/dll/win32/shell32/CFolder.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/CFolder.h?rev=71144=71143=71144=diff