X-Git-Url: https://plomlompom.com/repos/test.html?a=blobdiff_plain;f=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);
}