patch 9.0.1405: missing check for out-of-memory

Problem:    Missing check for out-of-memory.
Solution:   Check for alloc() returning NULL pointer. (closes #12149)
diff --git a/src/option.c b/src/option.c
index a2ab5c6..4d9da47 100644
--- a/src/option.c
+++ b/src/option.c
@@ -126,15 +126,14 @@
 #endif
     int		len;
     garray_T	ga;
-    int		mustfree;
-    char_u		*item;
+    char_u	*item;
 
     opt_idx = findoption((char_u *)"backupskip");
 
     ga_init2(&ga, 1, 100);
     for (n = 0; n < (long)ARRAY_LENGTH(names); ++n)
     {
-	mustfree = FALSE;
+	int		mustfree = FALSE;
 #ifdef UNIX
 	if (*names[n] == NUL)
 # ifdef MACOS_X
@@ -150,19 +149,22 @@
 	    // First time count the NUL, otherwise count the ','.
 	    len = (int)STRLEN(p) + 3;
 	    item = alloc(len);
-	    STRCPY(item, p);
-	    add_pathsep(item);
-	    STRCAT(item, "*");
-	    if (find_dup_item(ga.ga_data, item, options[opt_idx].flags)
-		    == NULL
-		    && ga_grow(&ga, len) == OK)
+	    if (item != NULL)
 	    {
-		if (ga.ga_len > 0)
-		    STRCAT(ga.ga_data, ",");
-		STRCAT(ga.ga_data, item);
-		ga.ga_len += len;
+		STRCPY(item, p);
+		add_pathsep(item);
+		STRCAT(item, "*");
+		if (find_dup_item(ga.ga_data, item, options[opt_idx].flags)
+									== NULL
+			&& ga_grow(&ga, len) == OK)
+		{
+		    if (ga.ga_len > 0)
+			STRCAT(ga.ga_data, ",");
+		    STRCAT(ga.ga_data, item);
+		    ga.ga_len += len;
+		}
+		vim_free(item);
 	    }
-	    vim_free(item);
 	}
 	if (mustfree)
 	    vim_free(p);