summaryrefslogtreecommitdiff
path: root/desktop/browser.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2004-08-08 19:13:40 +0000
committerJames Bursa <james@netsurf-browser.org>2004-08-08 19:13:40 +0000
commit8337acfc7839cde431d4761bbe693f0faa17b741 (patch)
treebc24ef36dc7136f2c973b907f9650dfb3495009f /desktop/browser.c
parent94103b8c962a8782e8a4187ecedf33ec51178833 (diff)
downloadnetsurf-8337acfc7839cde431d4761bbe693f0faa17b741.tar.gz
netsurf-8337acfc7839cde431d4761bbe693f0faa17b741.tar.bz2
[project @ 2004-08-08 19:13:40 by bursa]
Fix form submitting with an empty file upload. Update form_textarea_value(). Purge xcalloc() etc from form.c and handle memory exhaustion. svn path=/import/netsurf/; revision=1195
Diffstat (limited to 'desktop/browser.c')
-rw-r--r--desktop/browser.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index ca23c1438..6e797a97e 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -1638,12 +1638,20 @@ void browser_form_submit(struct browser_window *bw, struct form *form,
assert(form);
assert(bw->current_content->type == CONTENT_HTML);
- success = form_successful_controls(form, submit_button);
+ if (!form_successful_controls(form, submit_button, &success)) {
+ warn_user("NoMemory", 0);
+ return;
+ }
base = bw->current_content->data.html.base_url;
switch (form->method) {
case method_GET:
data = form_url_encode(success);
+ if (!data) {
+ form_free_successful(success);
+ warn_user("NoMemory", 0);
+ return;
+ }
url = xcalloc(1, strlen(form->action) + strlen(data) + 2);
if(form->action[strlen(form->action)-1] == '?') {
sprintf(url, "%s%s", form->action, data);
@@ -1659,6 +1667,11 @@ void browser_form_submit(struct browser_window *bw, struct form *form,
case method_POST_URLENC:
data = form_url_encode(success);
+ if (!data) {
+ form_free_successful(success);
+ warn_user("NoMemory", 0);
+ return;
+ }
url = url_join(form->action, base);
if (!url)
break;