Hi Huw,
Thanks of the review.
+ hr = IUnknown_QueryInterface(&newCache->IUnknown_inner, riid, ppvObj); IUnknown_Release(&newCache->IUnknown_inner);
But now if you call QI(IID_IUnknown) on this interface you'll get back something different, which is wrong. You'll need to do some more restructing to make this correct.
Btw, is there a bug that depends on this?
https://bugs.winehq.org/show_bug.cgi?id=7369
A better test would be to call QI(IID_IOleCache) on the returned IUnknown* and show that it's the same. You could also QI(IID_IUnknown) to test for my comment above.
I'll have another go at it.
Alistair.