Don't crash when calling DirectDrawSurface::EnumAttachedSurfaces on a
surface with no attached surfaces.
diff --git a/dlls/ddraw/dsurface/main.c b/dlls/ddraw/dsurface/main.c
index 700b4c7..e91473c 100644
--- a/dlls/ddraw/dsurface/main.c
+++ b/dlls/ddraw/dsurface/main.c
@@ -867,10 +867,12 @@
struct _surface_chain *chain = This->s.chain;
TRACE("(%p)->(%p,%p)\n",This,context,esfcb);
- for (i=0;i<chain->nrofsurfaces;i++) {
- TRACE( "Enumerating attached surface (%p)\n", chain->surfaces[i]);
- if (esfcb((LPDIRECTDRAWSURFACE) chain->surfaces[i], &(chain->surfaces[i]->s.surface_desc), context) == DDENUMRET_CANCEL)
- return DD_OK; /* FIXME: return value correct? */
+ if (chain) {
+ for (i=0;i<chain->nrofsurfaces;i++) {
+ TRACE( "Enumerating attached surface (%p)\n", chain->surfaces[i]);
+ if (esfcb((LPDIRECTDRAWSURFACE) chain->surfaces[i], &(chain->surfaces[i]->s.surface_desc), context) == DDENUMRET_CANCEL)
+ return DD_OK; /* FIXME: return value correct? */
+ }
}
return DD_OK;
}