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)
|
* 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: 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
|
* 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)
|
* relay: update buffers synchronization when buffers are renamed (issue #1428)
|
||||||
* xfer: send signal "xfer_ended" after the received file has been renamed (issue #1438)
|
* 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 */
|
/* get log level */
|
||||||
log_level = logger_get_level_for_buffer (logger_buffer->buffer);
|
log_level = logger_get_level_for_buffer (logger_buffer->buffer);
|
||||||
if (log_level == 0)
|
if (log_level == 0)
|
||||||
{
|
|
||||||
logger_buffer_free (logger_buffer);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
/* create directory */
|
/* create directory */
|
||||||
if (!logger_create_directory ())
|
if (!logger_create_directory ())
|
||||||
|
@ -566,16 +563,12 @@ logger_create_log_file (struct t_logger_buffer *logger_buffer)
|
||||||
"(\"%s\")"),
|
"(\"%s\")"),
|
||||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||||
weechat_config_string (logger_config_file_path));
|
weechat_config_string (logger_config_file_path));
|
||||||
logger_buffer_free (logger_buffer);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!logger_buffer->log_filename)
|
if (!logger_buffer->log_filename)
|
||||||
logger_set_log_filename (logger_buffer);
|
logger_set_log_filename (logger_buffer);
|
||||||
if (!logger_buffer->log_filename)
|
if (!logger_buffer->log_filename)
|
||||||
{
|
|
||||||
logger_buffer_free (logger_buffer);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
/* create or append to log file */
|
/* create or append to log file */
|
||||||
logger_buffer->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"),
|
_("%s%s: unable to write log file \"%s\": %s"),
|
||||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||||
logger_buffer->log_filename, strerror (errno));
|
logger_buffer->log_filename, strerror (errno));
|
||||||
logger_buffer_free (logger_buffer);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -603,7 +595,6 @@ logger_create_log_file (struct t_logger_buffer *logger_buffer)
|
||||||
fclose (logger_buffer->log_file);
|
fclose (logger_buffer->log_file);
|
||||||
logger_buffer->log_file = NULL;
|
logger_buffer->log_file = NULL;
|
||||||
logger_buffer->log_file_inode = 0;
|
logger_buffer->log_file_inode = 0;
|
||||||
logger_buffer_free (logger_buffer);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
logger_buffer->log_file_inode = statbuf.st_ino;
|
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))
|
if (!logger_create_log_file (logger_buffer))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!logger_buffer->log_file)
|
||||||
|
return;
|
||||||
|
|
||||||
weechat_va_format (format);
|
weechat_va_format (format);
|
||||||
if (vbuffer)
|
if (vbuffer)
|
||||||
{
|
{
|
||||||
|
@ -710,10 +704,8 @@ logger_stop (struct t_logger_buffer *logger_buffer, int write_info_line)
|
||||||
_("%s\t**** End of log ****"),
|
_("%s\t**** End of log ****"),
|
||||||
buf_time);
|
buf_time);
|
||||||
}
|
}
|
||||||
fclose (logger_buffer->log_file);
|
|
||||||
logger_buffer->log_file = NULL;
|
|
||||||
logger_buffer->log_file_inode = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logger_buffer_free (logger_buffer);
|
logger_buffer_free (logger_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue