updated for version 7.3.549
Problem:    In 'cinoptions' "0s" is interpreted as one shiftwidth. (David
            Pineau)
Solution:   Use the zero as zero. (Lech Lorens)
diff --git a/src/misc1.c b/src/misc1.c
index 7ba3972..988e368 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -6635,6 +6635,7 @@
     int		whilelevel;
     linenr_T	lnum;
     char_u	*options;
+    char_u	*digits;
     int		fraction = 0;	    /* init for GCC */
     int		divider;
     int		n;
@@ -6650,6 +6651,7 @@
 	l = options++;
 	if (*options == '-')
 	    ++options;
+	digits = options;	    /* remember where the digits start */
 	n = getdigits(&options);
 	divider = 0;
 	if (*options == '.')	    /* ".5s" means a fraction */
@@ -6666,7 +6668,7 @@
 	}
 	if (*options == 's')	    /* "2s" means two times 'shiftwidth' */
 	{
-	    if (n == 0 && fraction == 0)
+	    if (options == digits)
 		n = curbuf->b_p_sw;	/* just "s" is one 'shiftwidth' */
 	    else
 	    {