diff options
author | Jari Aalto <jari.aalto@cante.net> | 2005-12-07 14:08:12 +0000 |
---|---|---|
committer | Jari Aalto <jari.aalto@cante.net> | 2009-09-12 16:46:57 +0000 |
commit | 95732b497d12c98613bb3c5db16b61f377501a59 (patch) | |
tree | 5e1cdf79eb0407e09dca4c0ec29e11442c7d1d15 /array.c | |
parent | eb87367179effbe5f430236db8259006d71438b7 (diff) | |
download | android_external_bash-95732b497d12c98613bb3c5db16b61f377501a59.tar.gz android_external_bash-95732b497d12c98613bb3c5db16b61f377501a59.tar.bz2 android_external_bash-95732b497d12c98613bb3c5db16b61f377501a59.zip |
Imported from ../bash-3.1.tar.gz.
Diffstat (limited to 'array.c')
-rw-r--r-- | array.c | 24 |
1 files changed, 13 insertions, 11 deletions
@@ -107,7 +107,7 @@ ARRAY *a; ARRAY *a1; ARRAY_ELEMENT *ae, *new; - if (!a) + if (a == 0) return((ARRAY *) NULL); a1 = array_create(); a1->type = a->type; @@ -243,9 +243,9 @@ char *s; { register ARRAY_ELEMENT *ae, *new; - if (a == 0) + if (a == 0 || (array_empty(a) && s == 0)) return 0; - if (n <= 0) + else if (n <= 0) return (a->num_elements); ae = element_forw(a->head); @@ -253,16 +253,18 @@ char *s; new = array_create_element(0, s); ADD_BEFORE(ae, new); a->num_elements++; + if (array_num_elements(a) == 1) /* array was empty */ + return 1; } - a->max_index += n; - /* * Renumber all elements in the array except the one we just added. */ for ( ; ae != a->head; ae = element_forw(ae)) element_index(ae) += n; + a->max_index = element_index(a->head->prev); + return (a->num_elements); } @@ -288,7 +290,7 @@ ARRAY *array; ARRAY_ELEMENT *a; char *t; - if (array == 0 || array->head == 0 || array_empty (array)) + if (array == 0 || array_head(array) == 0 || array_empty(array)) return (ARRAY *)NULL; for (a = element_forw(array->head); a != array->head; a = element_forw(a)) { t = quote_string (a->value); @@ -313,7 +315,7 @@ int starsub, quoted; arrayind_t i; char *ifs, sep[2]; - p = array_head (a); + p = a ? array_head (a) : 0; if (p == 0 || array_empty (a) || start > array_max_index(a)) return ((char *)NULL); @@ -354,10 +356,10 @@ int mflags; ARRAY_ELEMENT *e; char *t, *ifs, sifs[2]; - if (array_head (a) == 0 || array_empty (a)) + if (a == 0 || array_head(a) == 0 || array_empty(a)) return ((char *)NULL); - a2 = array_copy (a); + a2 = array_copy(a); for (e = element_forw(a2->head); e != a2->head; e = element_forw(e)) { t = pat_subst(element_value(e), pat, rep, mflags); FREE(element_value(e)); @@ -427,7 +429,7 @@ char *v; { register ARRAY_ELEMENT *new, *ae; - if (!a) + if (a == 0) return(-1); new = array_create_element(i, v); if (i > array_max_index(a)) { @@ -473,7 +475,7 @@ arrayind_t i; { register ARRAY_ELEMENT *ae; - if (!a || array_empty(a)) + if (a == 0 || array_empty(a)) return((ARRAY_ELEMENT *) NULL); for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) if (element_index(ae) == i) { |