diff options
-rw-r--r-- | lib/formdata.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/formdata.c b/lib/formdata.c index 28a1dd4e6..1c73e923c 100644 --- a/lib/formdata.c +++ b/lib/formdata.c @@ -637,7 +637,7 @@ FORMcode FormAdd(struct HttpPost **httppost, struct HttpPost *post = NULL; CURLformoption option; struct curl_forms *forms = NULL; - int array_index = 0; + const char *array_value; /* value read from an array */ /* This is a state variable, that if TRUE means that we're parsing an array that we got passed to us. If FALSE we're parsing the input @@ -667,7 +667,10 @@ FORMcode FormAdd(struct HttpPost **httppost, /* first see if we have more parts of the array param */ if ( array_state ) { /* get the upcoming option from the given array */ - option = forms[array_index++].option; + option = forms->option; + array_value = forms->value; + + forms++; /* advance this to next entry */ if (CURLFORM_END == option) { /* end of array state */ array_state = FALSE; @@ -694,10 +697,8 @@ FORMcode FormAdd(struct HttpPost **httppost, switch (option) { case CURLFORM_ARRAY: forms = va_arg(params, struct curl_forms *); - if (forms) { + if (forms) array_state = TRUE; - array_index = 0; - } else return_value = FORMADD_NULL; break; @@ -768,7 +769,7 @@ FORMcode FormAdd(struct HttpPost **httppost, { const char *filename = NULL; if (array_state) - filename = forms[array_index].value; + filename = array_value; else filename = va_arg(params, const char *); if (current_form->value) { @@ -797,7 +798,7 @@ FORMcode FormAdd(struct HttpPost **httppost, { const char *contenttype = NULL; if (array_state) - contenttype = forms[array_index].value; + contenttype = array_value; else contenttype = va_arg(params, const char *); if (current_form->contenttype) { |