diff --git a/c/FetchPage b/c/FetchPage
index 6fbd208832dabe45705d4a4949db0869967cfdfd..1eaf7b11a1e676e5cb1c6cf635d77a1920b0880c 100644
--- a/c/FetchPage
+++ b/c/FetchPage
@@ -543,7 +543,7 @@ _kernel_oserror * fetchpage_postprocess_uri(browser_data * b, char * uri, int re
 /*             the history list, else 0.         */
 /*************************************************/
 
-_kernel_oserror * fetchpage_new(browser_data * b, char * url, int record)
+_kernel_oserror * fetchpage_new(browser_data * b, const char * url, int record)
 {
   /* Don't proceed unless there's something to fetch */
 
@@ -617,7 +617,7 @@ _kernel_oserror * fetchpage_new(browser_data * b, char * url, int record)
 /*             window, else 0.                   */
 /*************************************************/
 
-_kernel_oserror * fetchpage_new_add(browser_data * b, char * url, int record, char * add, int new_window)
+_kernel_oserror * fetchpage_new_add(browser_data * b, const char * url, int record, char * add, int new_window)
 {
   /* Don't proceed unless there's something to fetch */
 
@@ -683,7 +683,7 @@ _kernel_oserror * fetchpage_new_add(browser_data * b, char * url, int record, ch
 /*             the history list, else 0.         */
 /*************************************************/
 
-_kernel_oserror * fetchpage_new_raw(browser_data * b, char * url, int record)
+_kernel_oserror * fetchpage_new_raw(browser_data * b, const char * url, int record)
 {
   /* Don't proceed unless there's something to fetch */
 
diff --git a/c/Forms b/c/Forms
index 16cb99babaef7664259c4b2c631493acce2591df..642548f69a7d0cce25cfe469bafdc82d2f733ba9 100644
--- a/c/Forms
+++ b/c/Forms
@@ -2865,14 +2865,14 @@ static _kernel_oserror * form_build_data(browser_data * b, HStream * token, int
 
   tp = hp->token;
 
-  if ((tp->type & TYPE_GET) && tp->anchor)
+  if (HtmlFORMmethod(tp)==formmethod_GET && HtmlFORMaction(tp))
   {
     /* A GET form  - put the URL in */
 
     int    i;
     char * p;
 
-    i = form_extend_flex(data, strlen(tp->anchor) + 1);
+    i = form_extend_flex(data, strlen(HtmlFORMaction(tp)) + 1);
 
     if (i < 0)
     {
@@ -2882,7 +2882,7 @@ static _kernel_oserror * form_build_data(browser_data * b, HStream * token, int
 
     p = ((char *) *data) + i - 1;
 
-    strcpy(p, tp->anchor);
+    strcpy(p, HtmlFORMaction(tp));
 
     additions_start = ((int) p) - ((int) *data) + strlen(p) + 1;
     p               = strchr(p, 0);
@@ -3120,7 +3120,7 @@ static _kernel_oserror * form_submit_form(browser_data * b, HStream * token)
 
   /* For GET forms, we must have a URL to submit to in the 'anchor' field */
 
-  if ((tp->type & TYPE_GET) && tp->anchor)
+  if (HtmlFORMmethod(tp) == formmethod_GET && HtmlFORMaction(tp))
   {
     e = form_build_data(b, token, 0, 0, &data); // 0, 0 need filling in for INPUT TYPE = IMAGE
     if (!e) e = fetchpage_new(b, data, 1);
@@ -3140,7 +3140,7 @@ static _kernel_oserror * form_submit_form(browser_data * b, HStream * token)
   /* of the browser_data structure so that fetcher routines know to     */
   /* encode the data in the header, rather than the URL                 */
 
-  else if ((tp->type & TYPE_POST) && tp->anchor)
+  else if (HtmlFORMmethod(tp) == formmethod_POST && HtmlFORMaction(tp))
   {
     e = form_build_data(b, token, 0, 0, &b->extradata); // 0, 0 need filling in for INPUT TYPE = IMAGE
     tp = hp->token;
@@ -3159,7 +3159,7 @@ static _kernel_oserror * form_submit_form(browser_data * b, HStream * token)
 
       b->extradata = NULL;
     }
-    else e = fetchpage_new(b, tp->anchor, 1);
+    else e = fetchpage_new(b, HtmlFORMaction(tp), 1);
   }
 
   /* If the above fail, can't submit the form */
diff --git a/h/FetchPage b/h/FetchPage
index ed15e056231a0aa0c461570c1d3e63bb311aa02d..15ed9e6bbf1a2af07043b55709c9981e60e1cd21 100644
--- a/h/FetchPage
+++ b/h/FetchPage
@@ -27,9 +27,9 @@ int               fetchpage_fetch           (int eventcode, WimpPollBlock * b, I
 
 _kernel_oserror * fetchpage_postprocess_uri (browser_data * b, char * uri, int record);
 
-_kernel_oserror * fetchpage_new             (browser_data * b, char * url, int record);
-_kernel_oserror * fetchpage_new_add         (browser_data * b, char * url, int record, char * add, int new_window);
-_kernel_oserror * fetchpage_new_raw         (browser_data * b, char * url, int record);
+_kernel_oserror * fetchpage_new             (browser_data * b, const char * url, int record);
+_kernel_oserror * fetchpage_new_add         (browser_data * b, const char * url, int record, char * add, int new_window);
+_kernel_oserror * fetchpage_new_raw         (browser_data * b, const char * url, int record);
 
 void              fetchpage_claim_nulls     (browser_data * b);
 void              fetchpage_release_nulls   (browser_data * b);