kdrive: avoid null dereferences

Avoid jumping into NULL pointers for OS or card functions which do not
exist.
This commit is contained in:
Daniel Stone 2006-10-29 03:52:11 +03:00 committed by Daniel Stone
parent 738d2e8817
commit 644ee2434a

View File

@ -281,7 +281,7 @@ KdSuspend (void)
for (screen = card->screenList; screen; screen = screen->next)
if (screen->mynum == card->selected && screen->pScreen)
KdDisableScreen (screen->pScreen);
if (card->driver)
if (card->driver && card->cfuncs->restore)
(*card->cfuncs->restore) (card);
}
KdDisableInput ();
@ -295,7 +295,8 @@ KdDisableScreens (void)
KdSuspend ();
if (kdEnabled)
{
(*kdOsFuncs->Disable) ();
if (kdOsFuncs->Disable)
(*kdOsFuncs->Disable) ();
kdEnabled = FALSE;
}
}
@ -353,7 +354,8 @@ KdEnableScreens (void)
if (!kdEnabled)
{
kdEnabled = TRUE;
(*kdOsFuncs->Enable) ();
if (kdOsFuncs->Enable)
(*kdOsFuncs->Enable) ();
}
KdResume ();
}
@ -373,9 +375,10 @@ AbortDDX(void)
KdDisableScreens ();
if (kdOsFuncs)
{
if (kdEnabled)
if (kdEnabled && kdOsFuncs->Disable)
(*kdOsFuncs->Disable) ();
(*kdOsFuncs->Fini) ();
if (kdOsFuncs->Fini)
(*kdOsFuncs->Fini) ();
KdDoSwitchCmd ("stop");
}
@ -768,7 +771,8 @@ KdOsInit (KdOsFuncs *pOsFuncs)
if (serverGeneration == 1)
{
KdDoSwitchCmd ("start");
(*pOsFuncs->Init) ();
if (pOsFuncs->Init)
(*pOsFuncs->Init) ();
}
}
}