diff --git a/mozilla/content/html/content/src/nsHTMLFormElement.cpp b/mozilla/content/html/content/src/nsHTMLFormElement.cpp index e3602495db8..4f2d61d6957 100644 --- a/mozilla/content/html/content/src/nsHTMLFormElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLFormElement.cpp @@ -755,6 +755,11 @@ nsHTMLFormElement::DoSubmit(nsIPresContext* aPresContext, nsEvent* aEvent) nsCOMPtr webProgress = do_GetInterface(docShell); NS_ASSERTION(webProgress, "nsIDocShell not converted to nsIWebProgress!"); rv = webProgress->AddProgressListener(this); + NS_ENSURE_SUBMIT_SUCCESS(rv); + } + else { + // in case we didn't do anything, reset mIsSubmitting + mIsSubmitting = PR_FALSE; } return rv; diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index de48e2d1c6e..a53828896a7 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -5132,12 +5132,17 @@ nsDocShell::ScrollIfAnchor(nsIURI * aURI, PRBool * aWasAnchor, PRUint32 aLoadTyp newSpec.BeginReading(urlStart); newSpec.EndReading(refEnd); + // hasAnchor is used to check if the new URI really has anchor + // We can't always scroll, it would break submitting a form that has + // same target page. + PRBool hasAnchor = PR_FALSE; PRInt32 hashNew = newSpec.FindChar(kHash); if (hashNew == 0) { return NS_OK; // Strange URI } else if (hashNew > 0) { // found it + hasAnchor = PR_TRUE; urlEnd = urlStart; urlEnd.advance(hashNew); @@ -5254,7 +5259,8 @@ nsDocShell::ScrollIfAnchor(nsIURI * aURI, PRBool * aWasAnchor, PRUint32 aLoadTyp } } else { - *aWasAnchor = PR_TRUE; + // Tell there was an anchor only if there really was one (bug 135679) + *aWasAnchor = hasAnchor; } return NS_OK;