http://bugs.winehq.org/show_bug.cgi?id=4436
mike@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed| |1
------- Additional Comments From mike@codeweavers.com 2006-13-02 21:17 -------
I think in IStorage_DeleteAll() you'll need to mark the stream implementations themselves as no longer having a parent, as they'll exist until they're Release'd.
payload->parentStorage = NULL;
Then you'll probably want to check for that case through the StgStreamImpl code so that any functions trying to use the IStream implementation after its parent storage is released will fail rather than crash. (either that or show that it will crash on Windows if I release the parent storage then try use the streams)
For the code itself:
* lists - there's a "standard" Wine list implementation in include/wine/list.h. You don't even need to allocate memory for list entries, just make a "struct list entry" a member of StgStreamImpl, and a "struct list stHead" a member of StorageBaseImpl. Make sure to list_init( &stg->stHead ), then you can "list_add_tail( &stg->stHead, &stm->entry );", etc.
* since this file was written with 2 space indentation, please preserve it, and the general style of the original author. 1 coding style is easier to read than 10 mixed coding styles, even if the 1 style isn't your favourite.
* try to avoid whitespace changes