Dmitry Timoshkov : ole32: Fallback to parsing the Presentation streams ff parsing of the "CONTENTS" stream fails.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Oct 29 09:32:12 CDT 2015


Module: wine
Branch: master
Commit: 421b3ca3eb16a3ca254b615f6c7dfc1619c973e7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=421b3ca3eb16a3ca254b615f6c7dfc1619c973e7

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Fri Oct 23 18:32:22 2015 +0800

ole32: Fallback to parsing the Presentation streams ff parsing of the "CONTENTS" stream fails.

I have an application that tries to load an existing object from the file
using OleLoad() and fails because the "CONTENTS" stream has clsid set to
"Microsoft Photo Editor 3.0 Picture". I've dumped the contents of the OLE
storage to disk for investigation, and under Windows (where Microsoft Photo
Editor is not installed, and registry has no traces of its class guids)
OleLoad() is able to load objects from this storage, and after that OleDraw()
successfully paints the object contents on the screen. I've written an
application to play with the dumped storage, and under Windows the "CONTENTS"
stream also can't be loaded, but the storage also contains the "OlePres000"
stream which contains an object in CF_METAFILEPICT format, and this one can be
loaded and painted.

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ole32/datacache.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c
index caabd10..9284410 100644
--- a/dlls/ole32/datacache.c
+++ b/dlls/ole32/datacache.c
@@ -1368,7 +1368,8 @@ static HRESULT WINAPI DataCache_Load( IPersistStorage *iface, IStorage *pStg )
         hr = parse_contents_stream( This, pStg, stm );
         IStream_Release( stm );
     }
-    else
+
+    if (FAILED(hr))
         hr = parse_pres_streams( This, pStg );
 
     if (SUCCEEDED( hr ))




More information about the wine-cvs mailing list