patch 8.2.4030: a script local funcref is not found from a mapping

Problem:    A script local funcref is not found from a mapping.
Solution:   When looking for a function, also find a script-local funcref.
            (closes #9485)
diff --git a/src/evalvars.c b/src/evalvars.c
index 730c7d1..965b204 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2690,7 +2690,7 @@
 	{
 	    if ((flags & EVAL_VAR_IMPORT) == 0)
 	    {
-		if (sid != 0 && SCRIPT_ID_VALID(sid))
+		if (SCRIPT_ID_VALID(sid))
 		{
 		    ht = &SCRIPT_VARS(sid);
 		    if (ht != NULL)
@@ -2878,6 +2878,35 @@
 }
 
 /*
+ * Like find_var() but if the name starts with <SNR>99_ then look in the
+ * referenced script (used for a funcref).
+ */
+    dictitem_T *
+find_var_also_in_script(char_u *name, hashtab_T **htp, int no_autoload)
+{
+    if (STRNCMP(name, "<SNR>", 5) == 0 && isdigit(name[5]))
+    {
+	char_u	    *p = name + 5;
+	int	    sid = getdigits(&p);
+
+	if (SCRIPT_ID_VALID(sid) && *p == '_')
+	{
+	    hashtab_T	*ht = &SCRIPT_VARS(sid);
+
+	    if (ht != NULL)
+	    {
+		dictitem_T *di = find_var_in_ht(ht, 0, p + 1, no_autoload);
+
+		if (di != NULL)
+		    return di;
+	    }
+	}
+    }
+
+    return find_var(name, htp, no_autoload);
+}
+
+/*
  * Find variable "varname" in hashtab "ht" with name "htname".
  * When "varname" is empty returns curwin/curtab/etc vars dictionary.
  * Returns NULL if not found.