diff --git a/src/option.c b/src/option.c
index d70dc7b..d1f1d13 100644
--- a/src/option.c
+++ b/src/option.c
@@ -12786,17 +12786,18 @@
     int t;
     char_u *cp;
 
-    if ((!var[0] || (var[0] == '0' && !var[1])))
+    if (var[0] == NUL || (var[0] == '0' && var[1] == NUL))
     {
 	*array = NULL;
 	return TRUE;
     }
 
-    for (cp = var; *cp; ++cp)
+    for (cp = var; *cp != NUL; ++cp)
     {
-	if (cp == var || *(cp - 1) == ',')
+	if (cp == var || cp[-1] == ',')
 	{
 	    char_u *end;
+
 	    if (strtol((char *)cp, (char **)&end, 10) <= 0)
 	    {
 		if (cp != end)
@@ -12809,7 +12810,7 @@
 
 	if (VIM_ISDIGIT(*cp))
 	    continue;
-	if (*cp == ',' && cp > var && *(cp - 1) != ',')
+	if (cp[0] == ',' && cp > var && cp[-1] != ',' && cp[1] != NUL)
 	{
 	    ++valcount;
 	    continue;
@@ -12818,16 +12819,16 @@
 	return FALSE;
     }
 
-    *array = (int *) alloc((unsigned) ((valcount + 1) * sizeof(int)));
+    *array = (int *)alloc((unsigned) ((valcount + 1) * sizeof(int)));
     (*array)[0] = valcount;
 
     t = 1;
-    for (cp = var; *cp;)
+    for (cp = var; *cp != NUL;)
     {
 	(*array)[t++] = atoi((char *)cp);
-	while (*cp && *cp != ',')
+	while (*cp  != NUL && *cp != ',')
 	    ++cp;
-	if (*cp)
+	if (*cp != NUL)
 	    ++cp;
     }
 
