X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fgadgets.c;h=1b368c569f703cb37f0245f1e09cf6d72b53bd12;hb=37a06df577bbfd00f4b361f92cacb0d97036ba93;hp=2f980f3c1cf0065ec44b37312b6e6de90b5e0f05;hpb=ee749a764df3dfa944c1f9de740ccbeb1cfdef40;p=rocksndiamonds.git diff --git a/src/libgame/gadgets.c b/src/libgame/gadgets.c index 2f980f3c..1b368c56 100644 --- a/src/libgame/gadgets.c +++ b/src/libgame/gadgets.c @@ -163,12 +163,16 @@ static void default_callback_action(void *ptr) static void DrawGadget(struct GadgetInfo *gi, boolean pressed, boolean direct) { + struct GadgetDesign *gd; int state = (pressed ? GD_BUTTON_PRESSED : GD_BUTTON_UNPRESSED); - struct GadgetDesign *gd = (!gi->active ? &gi->alt_design[state] : - gi->checked ? &gi->alt_design[state] : - &gi->design[state]); boolean redraw_selectbox = FALSE; + if (gi == NULL) + return; + + gd = (!gi->active ? &gi->alt_design[state] : + gi->checked ? &gi->alt_design[state] : &gi->design[state]); + switch (gi->type) { case GD_TYPE_NORMAL_BUTTON: @@ -686,6 +690,9 @@ static void HandleGadgetTags(struct GadgetInfo *gi, int first_tag, va_list ap) { int tag = first_tag; + if (gi == NULL) + return; + while (tag != GDI_END) { switch(tag) @@ -1149,6 +1156,9 @@ void ModifyGadget(struct GadgetInfo *gi, int first_tag, ...) void RedrawGadget(struct GadgetInfo *gi) { + if (gi == NULL) + return; + if (gi->mapped) DrawGadget(gi, gi->state, gi->direct_draw); }