diff --git a/src/userfunc.c b/src/userfunc.c
index b3a7558..56dbf9e 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -226,6 +226,22 @@
     return OK;
 }
 
+    static void
+set_ufunc_name(ufunc_T *fp, char_u *name)
+{
+    STRCPY(fp->uf_name, name);
+
+    if (name[0] == K_SPECIAL)
+    {
+	fp->uf_name_exp = alloc(STRLEN(name) + 3);
+	if (fp->uf_name_exp != NULL)
+	{
+	    STRCPY(fp->uf_name_exp, "<SNR>");
+	    STRCAT(fp->uf_name_exp, fp->uf_name + 3);
+	}
+    }
+}
+
 /*
  * Parse a lambda expression and get a Funcref from "*arg".
  * Return OK or FAIL.  Returns NOTDONE for dict or {expr}.
@@ -309,7 +325,7 @@
 	vim_strncpy(p + 7, s, e - s);
 
 	fp->uf_refcount = 1;
-	STRCPY(fp->uf_name, name);
+	set_ufunc_name(fp, name);
 	hash_add(&func_hashtab, UF2HIKEY(fp));
 	fp->uf_args = newargs;
 	ga_init(&fp->uf_def_args);
@@ -333,7 +349,7 @@
 	fp->uf_flags = flags;
 	fp->uf_calls = 0;
 	fp->uf_script_ctx = current_sctx;
-	fp->uf_script_ctx.sc_lnum += sourcing_lnum - newlines.ga_len;
+	fp->uf_script_ctx.sc_lnum += SOURCING_LNUM - newlines.ga_len;
 
 	pt->pt_func = fp;
 	pt->pt_refcount = 1;
@@ -759,8 +775,6 @@
     linenr_T	lastline,	// last line of range
     dict_T	*selfdict)	// Dictionary for "self"
 {
-    char_u	*save_sourcing_name;
-    linenr_T	save_sourcing_lnum;
     sctx_T	save_current_sctx;
     int		using_sandbox = FALSE;
     funccall_T	*fc;
@@ -774,7 +788,6 @@
     int		islambda = FALSE;
     char_u	numbuf[NUMBUFLEN];
     char_u	*name;
-    size_t	len;
 #ifdef FEAT_PROFILE
     proftime_T	wait_start;
     proftime_T	call_start;
@@ -948,9 +961,6 @@
 
     // Don't redraw while executing the function.
     ++RedrawingDisabled;
-    save_sourcing_name = sourcing_name;
-    save_sourcing_lnum = sourcing_lnum;
-    sourcing_lnum = 1;
 
     if (fp->uf_flags & FC_SANDBOX)
     {
@@ -958,65 +968,51 @@
 	++sandbox;
     }
 
-    // need space for function name + ("function " + 3) or "[number]"
-    len = (save_sourcing_name == NULL ? 0 : STRLEN(save_sourcing_name))
-						   + STRLEN(fp->uf_name) + 20;
-    sourcing_name = alloc(len);
-    if (sourcing_name != NULL)
+    estack_push_ufunc(ETYPE_UFUNC, fp, 1);
+    if (p_verbose >= 12)
     {
-	if (save_sourcing_name != NULL
-			  && STRNCMP(save_sourcing_name, "function ", 9) == 0)
-	    sprintf((char *)sourcing_name, "%s[%d]..",
-				 save_sourcing_name, (int)save_sourcing_lnum);
-	else
-	    STRCPY(sourcing_name, "function ");
-	cat_func_name(sourcing_name + STRLEN(sourcing_name), fp);
+	++no_wait_return;
+	verbose_enter_scroll();
 
-	if (p_verbose >= 12)
+	smsg(_("calling %s"), SOURCING_NAME);
+	if (p_verbose >= 14)
 	{
-	    ++no_wait_return;
-	    verbose_enter_scroll();
+	    char_u	buf[MSG_BUF_LEN];
+	    char_u	numbuf2[NUMBUFLEN];
+	    char_u	*tofree;
+	    char_u	*s;
 
-	    smsg(_("calling %s"), sourcing_name);
-	    if (p_verbose >= 14)
+	    msg_puts("(");
+	    for (i = 0; i < argcount; ++i)
 	    {
-		char_u	buf[MSG_BUF_LEN];
-		char_u	numbuf2[NUMBUFLEN];
-		char_u	*tofree;
-		char_u	*s;
-
-		msg_puts("(");
-		for (i = 0; i < argcount; ++i)
+		if (i > 0)
+		    msg_puts(", ");
+		if (argvars[i].v_type == VAR_NUMBER)
+		    msg_outnum((long)argvars[i].vval.v_number);
+		else
 		{
-		    if (i > 0)
-			msg_puts(", ");
-		    if (argvars[i].v_type == VAR_NUMBER)
-			msg_outnum((long)argvars[i].vval.v_number);
-		    else
+		    // Do not want errors such as E724 here.
+		    ++emsg_off;
+		    s = tv2string(&argvars[i], &tofree, numbuf2, 0);
+		    --emsg_off;
+		    if (s != NULL)
 		    {
-			// Do not want errors such as E724 here.
-			++emsg_off;
-			s = tv2string(&argvars[i], &tofree, numbuf2, 0);
-			--emsg_off;
-			if (s != NULL)
+			if (vim_strsize(s) > MSG_BUF_CLEN)
 			{
-			    if (vim_strsize(s) > MSG_BUF_CLEN)
-			    {
-				trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN);
-				s = buf;
-			    }
-			    msg_puts((char *)s);
-			    vim_free(tofree);
+			    trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN);
+			    s = buf;
 			}
+			msg_puts((char *)s);
+			vim_free(tofree);
 		    }
 		}
-		msg_puts(")");
 	    }
-	    msg_puts("\n");   // don't overwrite this either
-
-	    verbose_leave_scroll();
-	    --no_wait_return;
+	    msg_puts(")");
 	}
+	msg_puts("\n");   // don't overwrite this either
+
+	verbose_leave_scroll();
+	--no_wait_return;
     }
 #ifdef FEAT_PROFILE
     if (do_profiling == PROF_YES)
@@ -1085,9 +1081,9 @@
 	verbose_enter_scroll();
 
 	if (aborting())
-	    smsg(_("%s aborted"), sourcing_name);
+	    smsg(_("%s aborted"), SOURCING_NAME);
 	else if (fc->rettv->v_type == VAR_NUMBER)
-	    smsg(_("%s returning #%ld"), sourcing_name,
+	    smsg(_("%s returning #%ld"), SOURCING_NAME,
 					       (long)fc->rettv->vval.v_number);
 	else
 	{
@@ -1109,7 +1105,7 @@
 		    trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN);
 		    s = buf;
 		}
-		smsg(_("%s returning %s"), sourcing_name, s);
+		smsg(_("%s returning %s"), SOURCING_NAME, s);
 		vim_free(tofree);
 	    }
 	}
@@ -1119,9 +1115,7 @@
 	--no_wait_return;
     }
 
-    vim_free(sourcing_name);
-    sourcing_name = save_sourcing_name;
-    sourcing_lnum = save_sourcing_lnum;
+    estack_pop();
     current_sctx = save_current_sctx;
 #ifdef FEAT_PROFILE
     if (do_profiling == PROF_YES)
@@ -1130,12 +1124,12 @@
     if (using_sandbox)
 	--sandbox;
 
-    if (p_verbose >= 12 && sourcing_name != NULL)
+    if (p_verbose >= 12 && SOURCING_NAME != NULL)
     {
 	++no_wait_return;
 	verbose_enter_scroll();
 
-	smsg(_("continuing in %s"), sourcing_name);
+	smsg(_("continuing in %s"), SOURCING_NAME);
 	msg_puts("\n");   // don't overwrite this either
 
 	verbose_leave_scroll();
@@ -1204,13 +1198,11 @@
     ga_clear_strings(&(fp->uf_args));
     ga_clear_strings(&(fp->uf_def_args));
     ga_clear_strings(&(fp->uf_lines));
+    VIM_CLEAR(fp->uf_name_exp);
 #ifdef FEAT_PROFILE
-    vim_free(fp->uf_tml_count);
-    fp->uf_tml_count = NULL;
-    vim_free(fp->uf_tml_total);
-    fp->uf_tml_total = NULL;
-    vim_free(fp->uf_tml_self);
-    fp->uf_tml_self = NULL;
+    VIM_CLEAR(fp->uf_tml_count);
+    VIM_CLEAR(fp->uf_tml_total);
+    VIM_CLEAR(fp->uf_tml_self);
 #endif
 }
 
@@ -1736,11 +1728,8 @@
     if (indent)
 	msg_puts("   ");
     msg_puts("function ");
-    if (fp->uf_name[0] == K_SPECIAL)
-    {
-	msg_puts_attr("<SNR>", HL_ATTR(HLF_8));
-	msg_puts((char *)fp->uf_name + 3);
-    }
+    if (fp->uf_name_exp != NULL)
+	msg_puts((char *)fp->uf_name_exp);
     else
 	msg_puts((char *)fp->uf_name);
     msg_putchar('(');
@@ -2308,7 +2297,7 @@
     }
 
     // Save the starting line number.
-    sourcing_lnum_top = sourcing_lnum;
+    sourcing_lnum_top = SOURCING_LNUM;
 
     indent = 2;
     nesting = 0;
@@ -2351,10 +2340,10 @@
 	    goto erret;
 	}
 
-	// Detect line continuation: sourcing_lnum increased more than one.
+	// Detect line continuation: SOURCING_LNUM increased more than one.
 	sourcing_lnum_off = get_sourced_lnum(eap->getline, eap->cookie);
-	if (sourcing_lnum < sourcing_lnum_off)
-	    sourcing_lnum_off -= sourcing_lnum;
+	if (SOURCING_LNUM < sourcing_lnum_off)
+	    sourcing_lnum_off -= SOURCING_LNUM;
 	else
 	    sourcing_lnum_off = 0;
 
@@ -2631,16 +2620,16 @@
 
 	    // Check that the autoload name matches the script name.
 	    j = FAIL;
-	    if (sourcing_name != NULL)
+	    if (SOURCING_NAME != NULL)
 	    {
 		scriptname = autoload_name(name);
 		if (scriptname != NULL)
 		{
 		    p = vim_strchr(scriptname, '/');
 		    plen = (int)STRLEN(p);
-		    slen = (int)STRLEN(sourcing_name);
+		    slen = (int)STRLEN(SOURCING_NAME);
 		    if (slen > plen && fnamecmp(p,
-					    sourcing_name + slen - plen) == 0)
+					    SOURCING_NAME + slen - plen) == 0)
 			j = OK;
 		    vim_free(scriptname);
 		}
@@ -2685,7 +2674,7 @@
 	}
 
 	// insert the new function in the function list
-	STRCPY(fp->uf_name, name);
+	set_ufunc_name(fp, name);
 	if (overwrite)
 	{
 	    hi = hash_find(&func_hashtab, name);
@@ -3353,7 +3342,7 @@
     if (fcp->dbg_tick != debug_tick)
     {
 	fcp->breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name,
-							       sourcing_lnum);
+							       SOURCING_LNUM);
 	fcp->dbg_tick = debug_tick;
     }
 #ifdef FEAT_PROFILE
@@ -3376,7 +3365,7 @@
 	else
 	{
 	    retval = vim_strsave(((char_u **)(gap->ga_data))[fcp->linenr++]);
-	    sourcing_lnum = fcp->linenr;
+	    SOURCING_LNUM = fcp->linenr;
 #ifdef FEAT_PROFILE
 	    if (do_profiling == PROF_YES)
 		func_line_start(cookie);
@@ -3385,12 +3374,12 @@
     }
 
     // Did we encounter a breakpoint?
-    if (fcp->breakpoint != 0 && fcp->breakpoint <= sourcing_lnum)
+    if (fcp->breakpoint != 0 && fcp->breakpoint <= SOURCING_LNUM)
     {
-	dbg_breakpoint(fp->uf_name, sourcing_lnum);
+	dbg_breakpoint(fp->uf_name, SOURCING_LNUM);
 	// Find next breakpoint.
 	fcp->breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name,
-							       sourcing_lnum);
+							       SOURCING_LNUM);
 	fcp->dbg_tick = debug_tick;
     }
 
