Преглед изворни кода

add_exclusive(): refactored to avoid double find_exclusive calls

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@60711 15284696-431f-4ddb-bdfa-cd5b030d7da7
Huidae Cho пре 11 година
родитељ
комит
9f4b2b432a
1 измењених фајлова са 7 додато и 8 уклоњено
  1. 7 8
      lib/gis/parser.c

+ 7 - 8
lib/gis/parser.c

@@ -851,20 +851,19 @@ static void add_exclusive(const char *option_key, int flag_key,
 	    name[len] = 0;
 
 	    if (!(exclusive = find_exclusive(name))) {
-		exclusive = &st->exclusive[st->n_exclusive++];
-		exclusive->name = name;
-		exclusive->allocated_keys = 10;
-		exclusive->n_keys = 0;
-		exclusive->keys = G_malloc(exclusive->allocated_keys *
-					   sizeof(char *));
-
 		if (st->n_exclusive >= st->allocated_exclusive) {
 		    st->allocated_exclusive += 10;
 		    st->exclusive = G_realloc(st->exclusive,
 				    	      st->allocated_exclusive *
 					      sizeof(struct Exclusive));
-		    exclusive = find_exclusive(name);
 		}
+
+		exclusive = &st->exclusive[st->n_exclusive++];
+		exclusive->name = name;
+		exclusive->allocated_keys = 10;
+		exclusive->n_keys = 0;
+		exclusive->keys = G_malloc(exclusive->allocated_keys *
+					   sizeof(char *));
 	    }
 
 	    if (!has_exclusive_key(exclusive->n_keys, exclusive->keys,