patch 9.1.1041: Vim9: out-of-bound access when echoing an enum

Problem:  Vim9: out-of-bound access when echoing an enum
Solution: Add NUL to growarray, check that ufunc is non-null
          before accessing it to make Coverity happy
          (Yegappan Lakshmanan)

closes: #16488

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_vim9_enum.vim b/src/testdir/test_vim9_enum.vim
index 74eb468..de26259 100644
--- a/src/testdir/test_vim9_enum.vim
+++ b/src/testdir/test_vim9_enum.vim
@@ -1586,4 +1586,19 @@
   v9.CheckScriptSuccess(lines)
 enddef
 
+" Echo an enum
+def Test_enum_echo()
+  var lines =<< trim END
+    vim9script
+    enum Demo
+      one('tahi'),
+      two('rua'),
+      three('toru')
+      var alias: string
+    endenum
+    assert_equal('enum Demo.one {name: one, ordinal: 0, alias: tahi}', execute('echo Demo.one')->split("\n")[0])
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
diff --git a/src/version.c b/src/version.c
index 8e53159..5b3683d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1041,
+/**/
     1040,
 /**/
     1039,
diff --git a/src/vim9class.c b/src/vim9class.c
index c3ccf02..e847bf0 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -4054,6 +4054,7 @@
 	vim_free(ga.ga_data);
 	return NULL;
     }
+    ga_append(&ga, NUL);
     return (char_u *)ga.ga_data;
 }
 
diff --git a/src/vim9expr.c b/src/vim9expr.c
index 7b8c96a..b765448 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -406,7 +406,7 @@
 	    }
 	}
 
-	if (is_super && IS_ABSTRACT_METHOD(ufunc))
+	if (is_super && ufunc != NULL && IS_ABSTRACT_METHOD(ufunc))
 	{
 	    // Trying to invoke an abstract method in a super class is not
 	    // allowed.