diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index 7298d9a..3acae98 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -161,6 +161,21 @@
   CheckScriptSuccess(lines)
 enddef
 
+def Test_global_local_function()
+  let lines =<< trim END
+      vim9script
+      def g:Func(): string
+          return 'global'
+      enddef
+      def Func(): string
+          return 'local'
+      enddef
+      assert_equal('global', g:Func())
+      assert_equal('local', Func())
+  END
+  CheckScriptSuccess(lines)
+enddef
+
 func TakesOneArg(arg)
   echo a:arg
 endfunc
diff --git a/src/userfunc.c b/src/userfunc.c
index 4c1e261..520c114 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -789,9 +789,10 @@
 
     if (!is_global)
     {
-	char_u *after_script = NULL;
+	int	vim9script = in_vim9script();
+	char_u	*after_script = NULL;
 
-	if (in_vim9script())
+	if (vim9script)
 	{
 	    // Find script-local function before global one.
 	    func = find_func_with_sid(name, current_sctx.sc_sid);
@@ -799,7 +800,7 @@
 		return func;
 	}
 
-	if (!in_vim9script()
+	if (!vim9script
 		&& name[0] == K_SPECIAL
 		&& name[1] == KS_EXTRA
 		&& name[2] == KE_SNR)
@@ -815,7 +816,7 @@
 	    else
 		after_script = NULL;
 	}
-	if (in_vim9script() || after_script != NULL)
+	if (vim9script || after_script != NULL)
 	{
 	    // Find imported function before global one.
 	    imported = find_imported(
@@ -2086,10 +2087,14 @@
     if (error == FCERR_NONE && funcexe->evaluate)
     {
 	char_u *rfname = fname;
+	int	is_global = FALSE;
 
-	// Ignore "g:" before a function name.
+	// Skip "g:" before a function name.
 	if (fp == NULL && fname[0] == 'g' && fname[1] == ':')
+	{
+	    is_global = TRUE;
 	    rfname = fname + 2;
+	}
 
 	rettv->v_type = VAR_NUMBER;	// default rettv is number zero
 	rettv->vval.v_number = 0;
@@ -2101,7 +2106,7 @@
 	     * User defined function.
 	     */
 	    if (fp == NULL)
-		fp = find_func(rfname, FALSE, NULL);
+		fp = find_func(rfname, is_global, NULL);
 
 	    // Trigger FuncUndefined event, may load the function.
 	    if (fp == NULL
@@ -2110,13 +2115,13 @@
 		    && !aborting())
 	    {
 		// executed an autocommand, search for the function again
-		fp = find_func(rfname, FALSE, NULL);
+		fp = find_func(rfname, is_global, NULL);
 	    }
 	    // Try loading a package.
 	    if (fp == NULL && script_autoload(rfname, TRUE) && !aborting())
 	    {
 		// loaded a package, search for the function again
-		fp = find_func(rfname, FALSE, NULL);
+		fp = find_func(rfname, is_global, NULL);
 	    }
 	    if (fp == NULL)
 	    {
@@ -2125,7 +2130,7 @@
 		// If using Vim9 script try not local to the script.
 		// TODO: should not do this if the name started with "s:".
 		if (p != NULL)
-		    fp = find_func(p, FALSE, NULL);
+		    fp = find_func(p, is_global, NULL);
 	    }
 
 	    if (fp != NULL && (fp->uf_flags & FC_DELETED))
@@ -2175,6 +2180,7 @@
 	     */
 	    error = call_internal_func(fname, argcount, argvars, rettv);
 	}
+
 	/*
 	 * The function call (or "FuncUndefined" autocommand sequence) might
 	 * have been aborted by an error, an interrupt, or an explicitly thrown
diff --git a/src/version.c b/src/version.c
index 021487d..33274ac 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1343,
+/**/
     1342,
 /**/
     1341,
