user32: Dangling pointer fix.
authorAndrew Talbot <andrew.talbot@talbotville.com>
Tue, 17 Jun 2008 20:21:55 +0000 (21:21 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 18 Jun 2008 14:15:12 +0000 (16:15 +0200)
dlls/user32/dde_misc.c

index 9061836be19bcac72b5be397c1c71f6001c858c6..049deaee685ae86364827005e1be2a77a8883d30 100644 (file)
@@ -515,7 +515,6 @@ UINT WDML_Initialize(LPDWORD pidInst, PFNCALLBACK pfnCallback,
            ret = DMLERR_INVALIDPARAMETER;
            goto theError;
        }
-       HeapFree(GetProcessHeap(), 0, pInstance); /* finished - release heap space used as work store */
        /* can't reinitialise if we have initialised nothing !! */
        reference_inst = WDML_InstanceList;
        /* must first check if we have been given a valid instance to re-initialise !!  how do we do that ? */
@@ -571,6 +570,9 @@ UINT WDML_Initialize(LPDWORD pidInst, PFNCALLBACK pfnCallback,
        reference_inst->CBFflags = pInstance->CBFflags;
        reference_inst->clientOnly = pInstance->clientOnly;
        reference_inst->monitorFlags = pInstance->monitorFlags;
+
+       HeapFree(GetProcessHeap(), 0, pInstance); /* finished - release heap space used as work store */
+
        LeaveCriticalSection(&WDML_CritSect);
     }