int i, menuchoice, len = 20, offset = 0, doresizewin = 0;
static dg_sortmode sortmode = NUM_SORTMODES;
time_t ctime;
- struct dg_game **games;
+ struct dg_game **games = NULL;
char ttyrecname[130], *replacestr = NULL, gametype[10];
int *is_nhext;
sigset_t oldmask, toblock;
max_height = local_LINES - 10;
if (max_height < 2) {
free(is_nhext);
- /* TODO: free games[] */
+ free_populated_games(games, len);
return;
}
if (max_height > abs_max_height) max_height = abs_max_height;
case ERR:
case 'q': case 'Q':
if (is_nhext) free(is_nhext);
+ free_populated_games(games, len);
return;
case '.':
games = sort_games (games, len, sortmode);
}
if (is_nhext) free(is_nhext);
+ free_populated_games(games, len);
}
/* ************************************************************* */
wall_email(char *from, char *msg)
{
int len, i;
- struct dg_game **games;
+ struct dg_game **games = NULL;
char spool_fn[1024+1];
FILE *user_spool = NULL;
struct flock fl = { 0 };
fprintf(user_spool, "%s:%s\n", from, msg);
fclose(user_spool);
}
+ free_populated_games(games, len);
}
void
{
int i, len, me_index;
char user_buf[22], pw_buf[22];
- struct dg_game **games;
+ struct dg_game **games = NULL;
/* We use simple password authentication, rather than challenge/response. */
printf ("\n");
if (!strcmp (games[i]->name, user_buf))
{
fprintf (stderr, "Game already in progress.\n");
+ free_populated_games(games, len);
return 1;
}
win.ws_row = win.ws_col = 0;
gen_inprogress_lock (0, getppid (), gen_nhext_filename ());
+ free_populated_games(games, len);
return 0;
}
}
sleep (2);
fprintf (stderr, "Login failed.\n");
+ free_populated_games(games, len);
return 1;
}
}
#endif /* USE_DEBUGFILE */
+void
+free_populated_games(struct dg_game **games, int len)
+{
+ int i;
+ if (!games || (len < 1)) return;
+
+ for (i = 0; i < len; i++) {
+ if (games[i]->ttyrec_fn) free(games[i]->ttyrec_fn);
+ if (games[i]->name) free(games[i]->name);
+ if (games[i]->date) free(games[i]->date);
+ if (games[i]->time) free(games[i]->time);
+ free(games[i]);
+ }
+ free(games);
+}
+
struct dg_game **
populate_games (int xgame, int *l, struct dg_user *me)
{