mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-22 04:21:51 +00:00
[console] Plug more memory leaks
This commit is contained in:
parent
3d65376f87
commit
3f9873a754
6 changed files with 53 additions and 18 deletions
|
@ -110,6 +110,7 @@ void C_DrawInputLine (struct inputline_s *il);
|
|||
|
||||
struct view_s;
|
||||
void Menu_Init (void);
|
||||
void Menu_Shutdown (void);
|
||||
void Menu_Load (void);
|
||||
void Menu_Draw (struct view_s view);
|
||||
void Menu_Draw_Hud (struct view_s view);
|
||||
|
|
|
@ -105,7 +105,9 @@ bi_il_clear (progs_t *pr, void *_res)
|
|||
static void
|
||||
bi_il_destroy (progs_t *pr, void *_res)
|
||||
{
|
||||
free (_res);
|
||||
il_resources_t *res = _res;
|
||||
PR_RESDELMAP (res->line_map);
|
||||
free (res);
|
||||
}
|
||||
|
||||
static il_data_t * __attribute__((pure))
|
||||
|
|
|
@ -160,6 +160,10 @@ static int con_saved_focos;
|
|||
|
||||
static qboolean con_debuglog;
|
||||
static qboolean chat_team;
|
||||
static dstring_t *c_print_buffer;
|
||||
static dstring_t *dlbar;
|
||||
static dstring_t *old_gamedir = 0;
|
||||
|
||||
|
||||
typedef struct {
|
||||
const char *prompt;
|
||||
|
@ -448,26 +452,25 @@ static __attribute__((format(PRINTF, 1, 0))) void
|
|||
C_Print (const char *fmt, va_list args)
|
||||
{
|
||||
char *s;
|
||||
static dstring_t *buffer;
|
||||
int mask, c;
|
||||
|
||||
if (!buffer)
|
||||
buffer = dstring_new ();
|
||||
if (!c_print_buffer)
|
||||
c_print_buffer = dstring_new ();
|
||||
|
||||
dvsprintf (buffer, fmt, args);
|
||||
dvsprintf (c_print_buffer, fmt, args);
|
||||
|
||||
// log all messages to file
|
||||
if (con_debuglog)
|
||||
Sys_DebugLog (va (0, "%s/%s/qconsole.log", qfs_userpath,//FIXME
|
||||
qfs_gamedir->dir.def), "%s", buffer->str);
|
||||
qfs_gamedir->dir.def), "%s", c_print_buffer->str);
|
||||
|
||||
if (!con_initialized)
|
||||
return;
|
||||
|
||||
s = buffer->str;
|
||||
s = c_print_buffer->str;
|
||||
|
||||
mask = 0;
|
||||
if (buffer->str[0] == 1 || buffer->str[0] == 2) {
|
||||
if (s[0] == 1 || s[0] == 2) {
|
||||
mask = 128; // go to colored text
|
||||
s++;
|
||||
}
|
||||
|
@ -506,10 +509,10 @@ C_Print (const char *fmt, va_list args)
|
|||
|
||||
// echo to debugging console
|
||||
// but don't print the highchars flag (leading \x01)
|
||||
if ((byte)buffer->str[0] > 2)
|
||||
fputs (buffer->str, stdout);
|
||||
else if ((byte)buffer->str[0])
|
||||
fputs (buffer->str + 1, stdout);
|
||||
if ((byte)c_print_buffer->str[0] > 2)
|
||||
fputs (c_print_buffer->str, stdout);
|
||||
else if ((byte)c_print_buffer->str[0])
|
||||
fputs (c_print_buffer->str + 1, stdout);
|
||||
}
|
||||
|
||||
/* DRAWING */
|
||||
|
@ -582,7 +585,6 @@ resize_input (view_t view, view_pos_t len)
|
|||
static void
|
||||
update_download (void)
|
||||
{
|
||||
static dstring_t *dlbar;
|
||||
const char *text;
|
||||
|
||||
if (!dlbar) {
|
||||
|
@ -815,8 +817,6 @@ C_DrawConsole (void)
|
|||
static void
|
||||
C_NewMap (void)
|
||||
{
|
||||
static dstring_t *old_gamedir = 0;
|
||||
|
||||
if (!old_gamedir || !strequal (old_gamedir->str, qfs_gamedir->gamedir))
|
||||
Menu_Load ();
|
||||
if (!old_gamedir)
|
||||
|
@ -1193,7 +1193,32 @@ C_Init (void)
|
|||
static void
|
||||
C_shutdown (void)
|
||||
{
|
||||
r_funcs->Draw_DestroyPic (conback);
|
||||
IE_Remove_Handler (con_event_id);
|
||||
Menu_Shutdown ();
|
||||
|
||||
Con_DestroyInputLine (cmd_line.input_line);
|
||||
Con_DestroyInputLine (team_input);
|
||||
Con_DestroyInputLine (chat_input);
|
||||
Con_DestroyBuffer (con_main);
|
||||
|
||||
if (download_buffer) {
|
||||
Draw_DestroyBuffer (download_buffer);
|
||||
}
|
||||
Draw_DestroyBuffer (console_buffer);
|
||||
Draw_DestroyBuffer (cmd_line.buffer);
|
||||
Draw_DestroyBuffer (notify_buffer);
|
||||
Draw_DestroyBuffer (say_line.buffer);
|
||||
|
||||
if (c_print_buffer) {
|
||||
dstring_delete (c_print_buffer);
|
||||
}
|
||||
if (dlbar) {
|
||||
dstring_delete (dlbar);
|
||||
}
|
||||
if (old_gamedir) {
|
||||
dstring_delete (old_gamedir);
|
||||
}
|
||||
}
|
||||
|
||||
static general_data_t plugin_info_general_data;
|
||||
|
|
|
@ -102,7 +102,6 @@ Con_shutdown (void *data)
|
|||
Sys_SetStdPrintf (saved_sys_printf);
|
||||
}
|
||||
if (con_module) {
|
||||
con_module->functions->general->shutdown ();
|
||||
PI_UnloadPlugin (con_module);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,7 +99,7 @@ static pr_func_t menu_quit;
|
|||
static pr_func_t menu_draw_hud;
|
||||
static pr_func_t menu_pre;
|
||||
static pr_func_t menu_post;
|
||||
static const char *top_menu;
|
||||
static char *top_menu;
|
||||
|
||||
typedef struct menu_func_s {
|
||||
const char *name;
|
||||
|
@ -365,7 +365,7 @@ bi_Menu_TopMenu (progs_t *pr, void *data)
|
|||
const char *name = P_GSTRING (pr, 0);
|
||||
|
||||
if (top_menu)
|
||||
free ((char *) top_menu);
|
||||
free (top_menu);
|
||||
top_menu = strdup (name);
|
||||
}
|
||||
|
||||
|
@ -591,6 +591,13 @@ Menu_Next_f (void)
|
|||
Menu_KeyEvent (QFK_DOWN, '\0', true);
|
||||
}
|
||||
|
||||
void
|
||||
Menu_Shutdown (void)
|
||||
{
|
||||
PR_Shutdown (&menu_pr_state);
|
||||
Hash_DelTable (menu_hash);
|
||||
free (top_menu);
|
||||
}
|
||||
|
||||
void
|
||||
Menu_Init (void)
|
||||
|
|
|
@ -161,6 +161,7 @@ event_handler (const IE_event_t *ie_event, void *_pr)
|
|||
static void
|
||||
BI_shutdown (void *data)
|
||||
{
|
||||
ECS_DelRegistry (canvas_sys.reg);
|
||||
}
|
||||
|
||||
static byte default_palette[256][3];
|
||||
|
|
Loading…
Reference in a new issue