1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

don't use HeapAlloc in EnumAttachedSurfaces

This commit is contained in:
FunkyFr3sh 2018-11-19 11:13:36 +01:00
parent 616bf915c4
commit a4c30f7ad8

View File

@ -623,12 +623,12 @@ HRESULT __stdcall ddraw_surface_EnumAttachedSurfaces(IDirectDrawSurfaceImpl *Thi
printf("IDirectDrawSurface::EnumAttachedSurfaces(This=%p, lpContext=%p, lpEnumSurfacesCallback=%p)\n", This, lpContext, lpEnumSurfacesCallback);
/* this is not actually complete, but Carmageddon seems to call EnumAttachedSurfaces instead of GetSurfaceDesc to get the main surface description */
static LPDDSURFACEDESC lpDDSurfaceDesc;
lpDDSurfaceDesc = (LPDDSURFACEDESC)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DDSURFACEDESC));
ddraw_surface_GetSurfaceDesc(This, lpDDSurfaceDesc);
static DDSURFACEDESC ddSurfaceDesc;
memset(&ddSurfaceDesc, 0, sizeof(DDSURFACEDESC));
ddraw_surface_GetSurfaceDesc(This, &ddSurfaceDesc);
This->caps |= DDSCAPS_BACKBUFFER; // Nox hack
lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This, lpDDSurfaceDesc, lpContext);
HeapFree(GetProcessHeap(), 0, lpDDSurfaceDesc);
lpEnumSurfacesCallback((LPDIRECTDRAWSURFACE)This, &ddSurfaceDesc, lpContext);
if ((This->caps & DDSCAPS_PRIMARYSURFACE) && (This->caps & DDSCAPS_FLIP) && !(This->caps & DDSCAPS_BACKBUFFER))
ddraw_surface_AddRef(This);