From e000a6b4954cbf337112a36bb3a7cf8a6491a40f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Sun, 3 May 2015 06:20:36 +0200 Subject: [PATCH] degesch: fix segfault --- degesch.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/degesch.c b/degesch.c index 451d429..55fb325 100644 --- a/degesch.c +++ b/degesch.c @@ -1527,10 +1527,20 @@ buffer_send_internal (struct app_context *ctx, struct buffer *buffer, buffer->lines_count++; if (buffer == ctx->current_buffer) + { buffer_line_display (ctx, line, false); - else if (!ctx->isolate_buffers && - (buffer == ctx->global_buffer || - buffer == ctx->current_buffer->server->buffer)) + return; + } + + bool can_leak = false; + if ((buffer == ctx->global_buffer) + || (ctx->current_buffer->type == BUFFER_GLOBAL + && buffer->type == BUFFER_SERVER) + || (ctx->current_buffer->type != BUFFER_GLOBAL + && buffer == ctx->current_buffer->server->buffer)) + can_leak = true; + + if (!ctx->isolate_buffers && can_leak) buffer_line_display (ctx, line, true); else {