]> granicus.if.org Git - nethack/commitdiff
curses memory: 'anything identifier'
authorPatR <rankin@nethack.org>
Fri, 8 Feb 2019 01:10:55 +0000 (17:10 -0800)
committerPatR <rankin@nethack.org>
Fri, 8 Feb 2019 01:10:55 +0000 (17:10 -0800)
Three or four instances of one simple memory leak.  Allocating a union
'anything' to pass to add_menu(), then not doing anything with it.  The
value gets copied so there's no reason for the original to stick around.

[There are still lots of other memory leaks.]

win/curses/cursmesg.c
win/curses/cursmisc.c
win/curses/curswins.c

index 3876449a004ba7233388fd9819ed1af94fa81e59..dc8aedc4485a559ce87f6edbcc360c3b103d019e 100644 (file)
@@ -281,23 +281,20 @@ curses_prev_mesg()
     int count;
     winid wid;
     long turn = 0;
-    anything *identifier;
+    anything Id;
     nhprev_mesg *mesg;
     menu_item *selected = NULL;
 
     wid = curses_get_wid(NHW_MENU);
     curses_create_nhmenu(wid);
-    identifier = (anything *) alloc((unsigned) sizeof (anything));
-    identifier->a_void = NULL;
+    Id = zeroany;
 
     for (count = 0; count < num_messages; count++) {
         mesg = get_msg_line(TRUE, count);
         if ((turn != mesg->turn) && (count != 0)) {
-            curses_add_menu(wid, NO_GLYPH, identifier, 0, 0, A_NORMAL,
-                            "---", FALSE);
+            curses_add_menu(wid, NO_GLYPH, &Id, 0, 0, A_NORMAL, "---", FALSE);
         }
-        curses_add_menu(wid, NO_GLYPH, identifier, 0, 0, A_NORMAL,
-                        mesg->str, FALSE);
+        curses_add_menu(wid, NO_GLYPH, &Id, 0, 0, A_NORMAL, mesg->str, FALSE);
         turn = mesg->turn;
     }
 
index 57a637bfe05fecec2f6b1200c5a3a1be46113cb0..4842804a9ae2968abcaaec5918d36b401edb6b6c 100644 (file)
@@ -573,7 +573,7 @@ void
 curses_view_file(const char *filename, boolean must_exist)
 {
     winid wid;
-    anything *identifier;
+    anything Id;
     char buf[BUFSZ];
     menu_item *selected = NULL;
     dlb *fp = dlb_fopen(filename, "r");
@@ -588,11 +588,10 @@ curses_view_file(const char *filename, boolean must_exist)
 
     wid = curses_get_wid(NHW_MENU);
     curses_create_nhmenu(wid);
-    identifier = (anything *) alloc(sizeof (anything));
-    identifier->a_void = NULL;
+    Id = zeroany;
 
     while (dlb_fgets(buf, BUFSZ, fp) != NULL) {
-        curses_add_menu(wid, NO_GLYPH, identifier, 0, 0, A_NORMAL, buf, FALSE);
+        curses_add_menu(wid, NO_GLYPH, &Id, 0, 0, A_NORMAL, buf, FALSE);
     }
 
     dlb_fclose(fp);
index d347b3133ebc9cd47b56656e04022de76f9e0be8..f62cb742308c67e2ad5af3b1d8ef295c3c2a1a5f 100644 (file)
@@ -473,7 +473,7 @@ curses_get_window_orientation(winid wid)
 void
 curses_puts(winid wid, int attr, const char *text)
 {
-    anything *identifier;
+    anything Id;
     WINDOW *win = NULL;
 
     if (is_main_window(wid)) {
@@ -502,10 +502,8 @@ curses_puts(winid wid, int attr, const char *text)
                        wid);
             return;
         }
-        identifier = (anything *) alloc((unsigned) sizeof (anything));
-        identifier->a_void = NULL;
-        curses_add_nhmenu_item(wid, NO_GLYPH, identifier, 0, 0, attr, text,
-                               FALSE);
+        Id = zeroany;
+        curses_add_nhmenu_item(wid, NO_GLYPH, &Id, 0, 0, attr, text, FALSE);
     } else {
         waddstr(win, text);
         wnoutrefresh(win);