home · contact · privacy
List dependencies.
[plomrogue] / roguelike.c
index ee5dbe48be76fa54e3e9f7cafd2993a0c13404d6..6d75aa949ae181b5afd9ac783874905fde314d17 100644 (file)
@@ -218,7 +218,7 @@ void draw_keys_window (struct Win * win) {
   attr_t attri;
   int y, x;
   char * keyname;
-  for (y = 0; 0 != keybindings[offset + y].name && y < win->height; y++) {
+  for (y = 0; y <= keyswindata->max && y < win->height; y++) {
     attri = 0;
     if (y == keyswindata->select - offset) {
       attri = A_REVERSE;
@@ -262,7 +262,7 @@ void init_keybindings(struct World * world) {
   c = getc(file);
   while (EOF != c) {
     if ('\n' == c) {
-      keybindings[keycount].name = calloc(commcount, sizeof(char));
+      keybindings[keycount].name = calloc(commcount + 1, sizeof(char));
       memcpy(keybindings[keycount].name, command, commcount);
       keybindings[keycount].key = key;
       keycount++;
@@ -416,5 +416,13 @@ int main () {
       update_info (&win_info);
       update_log (&win_log, "\nYou wait."); } }
 
+  free(map.cells);
+  for (key = 0; key <= world.keyswindata->max; key++)
+    free(world.keybindings[key].name);
+  free(world.keybindings);
+  free(world.keyswindata);
+  free(win_info.data);
+  free(win_log.data);
+
   endwin();
   return 0; }