On further debugging on both wine and winxp, I found that STR being aliased so
that its value actual changed after calling,
GdipCreateBitmapFromStream ({.STR);BMP
so the value passed to OleRelease was not the original {.STR but some unrelated
memory pointer. wine honestly executed OleRelease so there was a memory fault
while winxp seemed did nothing.
Finally I saved value of {.STR first,
PSTR=. {.STR
GdipCreateBitmapFromStream PSTR;BMP
...
coRelease PSTR NB. call PSTR->vtbl->release
This works for both wine and winxp.
You may further test if PSTR->vtbl->release not executed, will there be any
memory leak.
bill lam wrote:
Oleg Kobchenko wrote:
I thought OleRelease would do (this)->lpVtbl->Release.
I cannot find the sources for OleRelease
http://source.winehq.org/source/dlls/olecli32/
Any ideas?
To call release as described is possible in j602
with built-in pcall or using general/pcall addon.
Not sure what OleRelease exactly does but (this)->lpVtbl->Release should
be the correct way to release an interface in COM.
Did you find any example source code that use OleRelease?
I conjecture that OleRelease in win32 platimg (under native window) is a
no-op.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm