1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-03 08:13:14 +02:00

logger: fix crash when disabling logging on a buffer (closes #1444)

Crash happens if the log file was deleted before disabling logging and if the
option logger.file.info_lines is on.
This commit is contained in:
Sébastien Helleu
2020-01-25 13:42:12 +01:00
parent 4d67af399d
commit f980820395
2 changed files with 5 additions and 12 deletions
+1
View File
@@ -32,6 +32,7 @@ Bug fixes::
* core: fix evaluation of condition with nested "if" (issue #1434)
* irc: case-insensitive comparison on incoming CTCP command, force upper case on CTCP replies (issue #1439)
* irc: fix memory leak when the channel topic is changed
* logger: fix crash when logging is disabled on a buffer and the log file was deleted in the meanwhile, when option logger.file.info_lines is on (issue #1444)
* relay: update buffers synchronization when buffers are renamed (issue #1428)
* xfer: send signal "xfer_ended" after the received file has been renamed (issue #1438)
+4 -12
View File
@@ -552,10 +552,7 @@ logger_create_log_file (struct t_logger_buffer *logger_buffer)
/* get log level */
log_level = logger_get_level_for_buffer (logger_buffer->buffer);
if (log_level == 0)
{
logger_buffer_free (logger_buffer);
return 0;
}
/* create directory */
if (!logger_create_directory ())
@@ -566,16 +563,12 @@ logger_create_log_file (struct t_logger_buffer *logger_buffer)
"(\"%s\")"),
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
weechat_config_string (logger_config_file_path));
logger_buffer_free (logger_buffer);
return 0;
}
if (!logger_buffer->log_filename)
logger_set_log_filename (logger_buffer);
if (!logger_buffer->log_filename)
{
logger_buffer_free (logger_buffer);
return 0;
}
/* create or append to log file */
logger_buffer->log_file =
@@ -587,7 +580,6 @@ logger_create_log_file (struct t_logger_buffer *logger_buffer)
_("%s%s: unable to write log file \"%s\": %s"),
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
logger_buffer->log_filename, strerror (errno));
logger_buffer_free (logger_buffer);
return 0;
}
@@ -603,7 +595,6 @@ logger_create_log_file (struct t_logger_buffer *logger_buffer)
fclose (logger_buffer->log_file);
logger_buffer->log_file = NULL;
logger_buffer->log_file_inode = 0;
logger_buffer_free (logger_buffer);
return 0;
}
logger_buffer->log_file_inode = statbuf.st_ino;
@@ -654,6 +645,9 @@ logger_write_line (struct t_logger_buffer *logger_buffer,
if (!logger_create_log_file (logger_buffer))
return;
if (!logger_buffer->log_file)
return;
weechat_va_format (format);
if (vbuffer)
{
@@ -710,10 +704,8 @@ logger_stop (struct t_logger_buffer *logger_buffer, int write_info_line)
_("%s\t**** End of log ****"),
buf_time);
}
fclose (logger_buffer->log_file);
logger_buffer->log_file = NULL;
logger_buffer->log_file_inode = 0;
}
logger_buffer_free (logger_buffer);
}