From: PatR Date: Fri, 8 Feb 2019 01:10:55 +0000 (-0800) Subject: curses memory: 'anything identifier' X-Git-Tag: NetHack-3.6.2_Released~63^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1d5b59ab7eb39a520ca91dd33e19ac75f29b0ed0;p=nethack curses memory: 'anything identifier' 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.] --- diff --git a/win/curses/cursmesg.c b/win/curses/cursmesg.c index 3876449a0..dc8aedc44 100644 --- a/win/curses/cursmesg.c +++ b/win/curses/cursmesg.c @@ -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; } diff --git a/win/curses/cursmisc.c b/win/curses/cursmisc.c index 57a637bfe..4842804a9 100644 --- a/win/curses/cursmisc.c +++ b/win/curses/cursmisc.c @@ -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); diff --git a/win/curses/curswins.c b/win/curses/curswins.c index d347b3133..f62cb7423 100644 --- a/win/curses/curswins.c +++ b/win/curses/curswins.c @@ -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);