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