X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Fmisc.c;fp=src%2Fclient%2Fmisc.c;h=12f80bbd3421f639ba8f51a358346c7781d1bba2;hb=bdd8f79ade82ef1a7445580fa61a53fd1a5311db;hp=0b052deb0cf5b614184fc09bd7ff5ba5ea9c0b71;hpb=1befe1034a6330301d4af2df80aaa98430a6e8c9;p=plomrogue diff --git a/src/client/misc.c b/src/client/misc.c index 0b052de..12f80bb 100644 --- a/src/client/misc.c +++ b/src/client/misc.c @@ -1,7 +1,9 @@ /* src/client/misc.c */ #include "misc.h" -#include /* uint8_t, uint16_t */ +#include /* delwin(), getmaxy(), getmaxx(), newpad() */ +#include /* uint8_t, uint16_t, uint32_t */ +#include "../common/rexit.h" /* exit_err() */ #include "cleanup.h" /* for set_cleanup_flag() */ #include "keybindings.h" /* init_keybindings(), free_keybindings(), * save_keybindings() @@ -30,6 +32,15 @@ extern void load_interface_conf() init_keybindings("confclient/keybindings_wingeom", &world.kb_wingeom); init_keybindings("confclient/keybindings_winkeys", &world.kb_winkeys); init_winconfs(); + char * err_s = "load_interface_conf() makes illegaly large virtual screen."; + char * err_m = "load_interface_conf(): memory alloc error via newpad()."; + uint32_t maxy_test = getmaxy(world.wmeta.screen); + uint32_t maxx_test = getmaxx(world.wmeta.screen); + exit_err(maxy_test > UINT16_MAX || maxx_test > UINT16_MAX, err_s); + world.wmeta.padsize.y = maxy_test; + world.wmeta.padsize.x = maxx_test; + world.wmeta.pad = newpad(world.wmeta.padsize.y, 1); + exit_err(NULL == world.wmeta.pad, err_m); init_wins(); sorted_wintoggle_and_activate(); set_cleanup_flag(CLEANUP_INTERFACE); @@ -47,6 +58,7 @@ extern void unload_interface_conf() suspend_win(world.wmeta.active); } free_winconfs(); + delwin(world.wmeta.pad); }