do not try free memmory at exit it seam like the DdDeleteDirectDrawObject doing it for us, and it does not crash any longer at exists
Modified: trunk/reactos/lib/ddraw/hal/ddraw_hal.c
Modified: trunk/reactos/lib/ddraw/hal/surface_hal.c

Modified: trunk/reactos/lib/ddraw/hal/ddraw_hal.c
--- trunk/reactos/lib/ddraw/hal/ddraw_hal.c	2005-11-01 18:42:50 UTC (rev 18935)
+++ trunk/reactos/lib/ddraw/hal/ddraw_hal.c	2005-11-01 18:53:37 UTC (rev 18936)
@@ -315,6 +315,7 @@
 
     DdDeleteDirectDrawObject (&This->DirectDrawGlobal);
 
+	/*
     if(This->DirectDrawGlobal.lpDDKernelCaps)
         HeapFree(GetProcessHeap(), 0, This->DirectDrawGlobal.lpDDKernelCaps);
 
@@ -344,6 +345,7 @@
     
     if(This->DirectDrawGlobal.lpD3DGlobalDriverData)
         HeapFree(GetProcessHeap(), 0, (PVOID)This->DirectDrawGlobal.lpD3DGlobalDriverData);
+	*/
 }
 
 

Modified: trunk/reactos/lib/ddraw/hal/surface_hal.c
--- trunk/reactos/lib/ddraw/hal/surface_hal.c	2005-11-01 18:42:50 UTC (rev 18935)
+++ trunk/reactos/lib/ddraw/hal/surface_hal.c	2005-11-01 18:53:37 UTC (rev 18936)
@@ -80,6 +80,7 @@
 	This->Local.lpGbl = &This->Global;
 	This->Local.lpSurfMore = &This->More;
 
+	
 	/* FIXME do a memcopy */
 	This->Local.ddsCaps = *(DDSCAPS*)&This->ddsd.ddsCaps;