patch 8.2.3062: internal error when adding several text properties
Problem: Internal error when adding several text properties.
Solution: Do not handle text properties when deleting a line for splitting a
data block. (closes #8466)
diff --git a/src/memline.c b/src/memline.c
index f1c2a8a..0eac1cd 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -3662,7 +3662,7 @@
#ifdef FEAT_PROP_POPUP
// If there are text properties, make a copy, so that we can update
// properties in preceding and following lines.
- if (buf->b_has_textprop && !(flags & ML_DEL_UNDO))
+ if (buf->b_has_textprop && !(flags & (ML_DEL_UNDO | ML_DEL_NOPROP)))
{
size_t textlen = STRLEN((char_u *)dp + line_start) + 1;
@@ -3765,9 +3765,11 @@
{
// Adjust text properties in the line above and below.
if (lnum > 1)
- adjust_text_props_for_delete(buf, lnum - 1, textprop_save, textprop_save_len, TRUE);
+ adjust_text_props_for_delete(buf, lnum - 1, textprop_save,
+ textprop_save_len, TRUE);
if (lnum <= buf->b_ml.ml_line_count)
- adjust_text_props_for_delete(buf, lnum, textprop_save, textprop_save_len, FALSE);
+ adjust_text_props_for_delete(buf, lnum, textprop_save,
+ textprop_save_len, FALSE);
}
vim_free(textprop_save);
#endif
@@ -4021,7 +4023,7 @@
| ML_APPEND_NOPROP
#endif
);
- (void)ml_delete_int(buf, lnum, 0);
+ (void)ml_delete_int(buf, lnum, ML_DEL_NOPROP);
}
}
vim_free(new_line);