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.v2.8-utf8proc
parent
4d67af399d
commit
f980820395
|
@ -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)
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue