diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2006-07-03 21:41:25 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2006-07-03 21:41:25 +0000 |
commit | 5e2567370d9be341a18203a5df9206ebe32e1fb9 (patch) | |
tree | 859cb4d4fc737d97110d1b0a2ca860d3638c7750 /desktop/browser.c | |
parent | de0c4e2c32c1ecbef75293653adff4e4ceffeffe (diff) | |
download | netsurf-5e2567370d9be341a18203a5df9206ebe32e1fb9.tar.gz netsurf-5e2567370d9be341a18203a5df9206ebe32e1fb9.tar.bz2 |
Fix submission of forms in embedded objects; resolve submission URL at
form creation time rather than at submit.
svn path=/trunk/netsurf/; revision=2707
Diffstat (limited to 'desktop/browser.c')
-rw-r--r-- | desktop/browser.c | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/desktop/browser.c b/desktop/browser.c index 0d6282ae0..f0cb0559e 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -846,7 +846,6 @@ void browser_window_mouse_action_html(struct browser_window *bw, struct content *url_content = c; struct form_control *gadget = 0; struct content *object = NULL; - url_func_result res; struct box *next_box; bw->drag_type = DRAGGING_NONE; @@ -956,11 +955,8 @@ void browser_window_mouse_action_html(struct browser_window *bw, /* drop through */ case GADGET_SUBMIT: if (gadget->form) { - res = url_join(gadget->form->action, base_url, - &url); snprintf(status_buffer, sizeof status_buffer, messages_get("FormSubmit"), - (res == URL_FUNC_OK) ? url : gadget->form->action); status = status_buffer; pointer = GUI_POINTER_POINT; @@ -1886,9 +1882,8 @@ gui_pointer_shape get_pointer_shape(css_cursor cursor) void browser_form_submit(struct browser_window *bw, struct form *form, struct form_control *submit_button) { - char *data = 0, *url = 0, *url1 = 0, *base; + char *data = 0, *url = 0; struct form_successful_control *success; - url_func_result res; assert(form); assert(bw->current_content->type == CONTENT_HTML); @@ -1897,7 +1892,6 @@ void browser_form_submit(struct browser_window *bw, struct form *form, warn_user("NoMemory", 0); return; } - base = bw->current_content->data.html.base_url; switch (form->method) { case method_GET: @@ -1913,16 +1907,14 @@ void browser_form_submit(struct browser_window *bw, struct form *form, warn_user("NoMemory", 0); return; } - if(form->action[strlen(form->action)-1] == '?') { + if (form->action[strlen(form->action)-1] == '?') { sprintf(url, "%s%s", form->action, data); } else { sprintf(url, "%s?%s", form->action, data); } - res = url_join(url, base, &url1); - if (res != URL_FUNC_OK) - break; - browser_window_go(bw, url1, bw->current_content->url, true); + browser_window_go(bw, url, bw->current_content->url, + true); break; case method_POST_URLENC: @@ -1932,19 +1924,15 @@ void browser_form_submit(struct browser_window *bw, struct form *form, warn_user("NoMemory", 0); return; } - res = url_join(form->action, base, &url); - if (res != URL_FUNC_OK) - break; - browser_window_go_post(bw, url, data, 0, true, - bw->current_content->url, false); + browser_window_go_post(bw, form->action, data, 0, + true, bw->current_content->url, + false); break; case method_POST_MULTIPART: - res = url_join(form->action, base, &url); - if (res != URL_FUNC_OK) - break; - browser_window_go_post(bw, url, 0, success, true, - bw->current_content->url, false); + browser_window_go_post(bw, form->action, 0, success, + true, bw->current_content->url, + false); break; default: @@ -1954,7 +1942,6 @@ void browser_form_submit(struct browser_window *bw, struct form *form, form_free_successful(success); free(data); free(url); - free(url1); } |