patch 8.2.4974: ":so" command may read after end of buffer

Problem:    ":so" command may read after end of buffer.
Solution:   Compute length of text properly.
diff --git a/src/scriptfile.c b/src/scriptfile.c
index 03c733d..f3a5783 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1965,6 +1965,7 @@
 		break;
 	    buf = (char_u *)ga.ga_data;
 	    buf[ga.ga_len++] = NUL;
+	    len = ga.ga_len;
 	}
 	else
 	{
@@ -1972,8 +1973,8 @@
 	    if (fgets((char *)buf + ga.ga_len, ga.ga_maxlen - ga.ga_len,
 			sp->fp) == NULL)
 		break;
+	    len = ga.ga_len + (int)STRLEN(buf + ga.ga_len);
 	}
-	len = ga.ga_len + (int)STRLEN(buf + ga.ga_len);
 #ifdef USE_CRNL
 	// Ignore a trailing CTRL-Z, when in Dos mode.	Only recognize the
 	// CTRL-Z by its own, or after a NL.