patch 7.4.1131
Problem:    New lines in the viminfo file are dropped.
Solution:   Copy lines starting with "|".  Fix that when using :rviminfo in a
            function global variables were restored as function-local
            variables.
diff --git a/src/misc2.c b/src/misc2.c
index 4e9e473..014c66a 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -2140,6 +2140,26 @@
     return s;
 }
 
+#if defined(FEAT_VIMINFO) || defined(PROTO)
+/*
+ * Make a copy of string "p" and add it to "gap".
+ * When out of memory nothing changes.
+ */
+    void
+ga_add_string(garray_T *gap, char_u *p)
+{
+    char_u *cp = vim_strsave(p);
+
+    if (cp != NULL)
+    {
+	if (ga_grow(gap, 1) == OK)
+	    ((char_u **)(gap->ga_data))[gap->ga_len++] = cp;
+	else
+	    vim_free(cp);
+    }
+}
+#endif
+
 /*
  * Concatenate a string to a growarray which contains characters.
  * When "s" is NULL does not do anything.