Index: ms-ole.c
===================================================================
RCS file: /cvsroot/wv/libole2/ms-ole.c,v
retrieving revision 1.42
diff -u -r1.42 ms-ole.c
--- ms-ole.c	7 Aug 2004 20:41:35 -0000	1.42
+++ ms-ole.c	19 Aug 2004 19:13:52 -0000
@@ -1155,13 +1157,24 @@
 	if (PPS_GET_NEXT(mem) != PPS_END_OF_CHAIN)
 		pps_decode_tree (f, PPS_GET_NEXT(mem), parent);
 	
+        /* the underlying caching might have reused the memory      */
+        /* when not using mmap                                      */
+        /* therefore we have to reload the right sector here again  */
+        mem           = get_pps_ptr (f, p, FALSE);
+
 	if (PPS_GET_PREV(mem) != PPS_END_OF_CHAIN)
 		pps_decode_tree (f, PPS_GET_PREV(mem), parent);
+
+        /* same as above */
+        mem           = get_pps_ptr (f, p, FALSE);
 	
 	if (PPS_GET_DIR (mem) != PPS_END_OF_CHAIN)
 		if (pps->type == MsOleStorageT ||
 		    pps->type == MsOleRootT)
 			pps_decode_tree (f, PPS_GET_DIR(mem), pps);
+
+        /* same as above */
+        mem           = get_pps_ptr (f, p, FALSE);
 
 	pps->start   = PPS_GET_STARTBLOCK (mem);