patch 9.0.0097: long quickfix line is truncated for :clist

Problem:    Long quickfix line is truncated for :clist.
Solution:   Allocate a buffer if needed.
diff --git a/src/quickfix.c b/src/quickfix.c
index 49484e0..b9b908c 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -3622,13 +3622,31 @@
     }
     msg_puts(" ");
 
-    // Remove newlines and leading whitespace from the text.  For an
-    // unrecognized line keep the indent, the compiler may mark a word
-    // with ^^^^.
-    qf_fmt_text((fname != NULL || qfp->qf_lnum != 0)
-				? skipwhite(qfp->qf_text) : qfp->qf_text,
-				IObuff, IOSIZE);
-    msg_prt_line(IObuff, FALSE);
+    {
+	char_u *tbuf = IObuff;
+	size_t	tbuflen = IOSIZE;
+	size_t	len = STRLEN(qfp->qf_text) + 3;
+
+	if (len > IOSIZE)
+	{
+	    tbuf = alloc(len);
+	    if (tbuf != NULL)
+		tbuflen = len;
+	    else
+		tbuf = IObuff;
+	}
+
+	// Remove newlines and leading whitespace from the text.  For an
+	// unrecognized line keep the indent, the compiler may mark a word
+	// with ^^^^.
+	qf_fmt_text((fname != NULL || qfp->qf_lnum != 0)
+				    ? skipwhite(qfp->qf_text) : qfp->qf_text,
+				    tbuf, tbuflen);
+	msg_prt_line(tbuf, FALSE);
+
+	if (tbuf != IObuff)
+	    vim_free(tbuf);
+    }
     out_flush();		// show one line at a time
 }