patch 8.1.0126: various problems with 'vartabstop'

Problem:    Various problems with 'vartabstop'.
Solution:   Fix memory leak.  Fix crash. Add a few more tests. (Christian
            Brabandt, closes #3076)
diff --git a/src/option.c b/src/option.c
index 4fdfe10..50d42eb 100644
--- a/src/option.c
+++ b/src/option.c
@@ -12870,7 +12870,7 @@
 tabstop_fromto(
 	colnr_T start_col,
 	colnr_T end_col,
-	int	ts,
+	int	ts_arg,
 	int	*vts,
 	int	*ntabs,
 	int	*nspcs)
@@ -12880,12 +12880,14 @@
     int		padding = 0;
     int		tabcount;
     int		t;
+    int		ts = ts_arg == 0 ? curbuf->b_p_ts : ts_arg;
 
     if (vts == NULL || vts[0] == 0)
     {
 	int tabs = 0;
-	int initspc = ts - (start_col % ts);
+	int initspc = 0;
 
+	initspc = ts - (start_col % ts);
 	if (spaces >= initspc)
 	{
 	    spaces -= initspc;