Andrew Eikum wrote:
dlls/gdiplus/gdiplus_private.h | 3 + dlls/gdiplus/graphics.c | 154 ++++++++++++++++++++++++++++++++++++++-- include/gdiplusflat.h | 1 + 3 files changed, 152 insertions(+), 6 deletions(-)
This looks wrong for me cause I don't think you could pass container id created with one Graphics to Graphics.EndContainer() of another. I've just checked it and it doesn't return any error code, but generated container ids aren't the same when you call BeginContainer() for e.g. two objects as sequent steps. It looks like on native these value are module unique, some kind of handle table needed. This kills the first problem I described - passing strange value to another Graphics.
Also note that Save()/Restore() functionality uses the same stack with container calls (at least msdn tells us that), for that Save/Restore we already have a test: --- static void test_save_restore(void) .... /* The same state value should never be returned twice. */ todo_wine check_no_duplicates(state_log); .... ---
It clearly says that no duplicates allowed, even after multiple object deletion - it checks for values returned during the whole test.