patch 8.1.1387: calling prop_add() in an empty buffer doesn't work

Problem:    Calling prop_add() in an empty buffer doesn't work. (Dominique
            Pelle)
Solution:   Open the memline before adding a text property. (closes #4412)
diff --git a/src/textprop.c b/src/textprop.c
index e993afc..9011c66 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -12,6 +12,7 @@
  *
  * TODO:
  * - Adjust text property column and length when text is inserted/deleted.
+ *   -> :substitute with multiple matches, issue #4427
  *   -> a :substitute with a multi-line match
  *   -> search for changed_bytes() from misc1.c
  *   -> search for mark_col_adjust()
@@ -238,6 +239,9 @@
 	return;
     }
 
+    if (buf->b_ml.ml_mfp == NULL)
+	ml_open(buf);
+
     for (lnum = start_lnum; lnum <= end_lnum; ++lnum)
     {
 	colnr_T col;	// start column
@@ -327,7 +331,7 @@
 
     // Be quick when no text property types have been defined or the buffer,
     // unless we are adding one.
-    if (!buf->b_has_textprop && !will_change)
+    if ((!buf->b_has_textprop && !will_change) || buf->b_ml.ml_mfp == NULL)
 	return 0;
 
     // Fetch the line to get the ml_line_len field updated.