@@ -1010,39 +1010,42 @@ qf_parse_line(
10101010 }
10111011 else if (vim_strchr ((char_u * )"CZ" , idx ) != NULL )
10121012 { /* continuation of multi-line msg */
1013- qfline_T * qfprev = qi -> qf_lists [qi -> qf_curlist ].qf_last ;
1014-
1015- if (qfprev == NULL )
1016- return QF_FAIL ;
1017- if (* fields -> errmsg && !qi -> qf_multiignore )
1013+ if (!qi -> qf_multiignore )
10181014 {
1019- len = ( int ) STRLEN ( qfprev -> qf_text ) ;
1020- if (( ptr = alloc (( unsigned )( len + STRLEN ( fields -> errmsg ) + 2 )))
1021- == NULL )
1015+ qfline_T * qfprev = qi -> qf_lists [ qi -> qf_curlist ]. qf_last ;
1016+
1017+ if ( qfprev == NULL )
10221018 return QF_FAIL ;
1023- STRCPY (ptr , qfprev -> qf_text );
1024- vim_free (qfprev -> qf_text );
1025- qfprev -> qf_text = ptr ;
1026- * (ptr += len ) = '\n' ;
1027- STRCPY (++ ptr , fields -> errmsg );
1019+ if (* fields -> errmsg && !qi -> qf_multiignore )
1020+ {
1021+ len = (int )STRLEN (qfprev -> qf_text );
1022+ if ((ptr = alloc ((unsigned )(len + STRLEN (fields -> errmsg ) + 2 )))
1023+ == NULL )
1024+ return QF_FAIL ;
1025+ STRCPY (ptr , qfprev -> qf_text );
1026+ vim_free (qfprev -> qf_text );
1027+ qfprev -> qf_text = ptr ;
1028+ * (ptr += len ) = '\n' ;
1029+ STRCPY (++ ptr , fields -> errmsg );
1030+ }
1031+ if (qfprev -> qf_nr == -1 )
1032+ qfprev -> qf_nr = fields -> enr ;
1033+ if (vim_isprintc (fields -> type ) && !qfprev -> qf_type )
1034+ /* only printable chars allowed */
1035+ qfprev -> qf_type = fields -> type ;
1036+
1037+ if (!qfprev -> qf_lnum )
1038+ qfprev -> qf_lnum = fields -> lnum ;
1039+ if (!qfprev -> qf_col )
1040+ qfprev -> qf_col = fields -> col ;
1041+ qfprev -> qf_viscol = fields -> use_viscol ;
1042+ if (!qfprev -> qf_fnum )
1043+ qfprev -> qf_fnum = qf_get_fnum (qi , qi -> qf_directory ,
1044+ * fields -> namebuf || qi -> qf_directory != NULL
1045+ ? fields -> namebuf
1046+ : qi -> qf_currfile != NULL && fields -> valid
1047+ ? qi -> qf_currfile : 0 );
10281048 }
1029- if (qfprev -> qf_nr == -1 )
1030- qfprev -> qf_nr = fields -> enr ;
1031- if (vim_isprintc (fields -> type ) && !qfprev -> qf_type )
1032- /* only printable chars allowed */
1033- qfprev -> qf_type = fields -> type ;
1034-
1035- if (!qfprev -> qf_lnum )
1036- qfprev -> qf_lnum = fields -> lnum ;
1037- if (!qfprev -> qf_col )
1038- qfprev -> qf_col = fields -> col ;
1039- qfprev -> qf_viscol = fields -> use_viscol ;
1040- if (!qfprev -> qf_fnum )
1041- qfprev -> qf_fnum = qf_get_fnum (qi , qi -> qf_directory ,
1042- * fields -> namebuf || qi -> qf_directory != NULL
1043- ? fields -> namebuf
1044- : qi -> qf_currfile != NULL && fields -> valid
1045- ? qi -> qf_currfile : 0 );
10461049 if (idx == 'Z' )
10471050 qi -> qf_multiline = qi -> qf_multiignore = FALSE;
10481051 line_breakcheck ();
0 commit comments