diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 814d93b..0ae1032 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -632,7 +632,6 @@
         String url = null;
 
         mFakeTitle = (TextView) findViewById(R.id.fake_title);
-
         if (mMap != null) {
             Bundle b = mMap.getBundle(EXTRA_EDIT_BOOKMARK);
             if (b != null) {
@@ -657,14 +656,13 @@
             url = mOriginalUrl = mMap.getString(BrowserContract.Bookmarks.URL);
             mTouchIconUrl = mMap.getString(TOUCH_ICON_URL);
             mCurrentFolder = mMap.getLong(BrowserContract.Bookmarks.PARENT, DEFAULT_FOLDER_ID);
+
+            if (title.length() > MAX_TITLE_LENGTH) {
+                title = title.substring(0, MAX_TITLE_LENGTH);
+            }
         }
 
         mTitle = (EditText) findViewById(R.id.title);
-
-        if (title.length() > MAX_TITLE_LENGTH) {
-            title = title.substring(0, MAX_TITLE_LENGTH);
-        }
-
         mTitle.setText(title);
         BrowserUtils.maxLengthFilter(AddBookmarkPage.this, mTitle, MAX_TITLE_LENGTH);
 
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 320e4c8..0a6c83d 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -200,6 +200,7 @@
     private boolean mUpdateThumbnail;
     private Timestamp timestamp;
     private boolean mFullScreen = false;
+    private boolean mReceivedError;
 
     /**
      * See {@link #clearBackStackWhenItemAdded(java.util.regex.Pattern)}.
@@ -380,6 +381,7 @@
         public void onPageStarted(WebView view, String url, Bitmap favicon) {
             mInPageLoad = true;
             mPageFinished = false;
+            mReceivedError = false;
             mUpdateThumbnail = true;
             mPageLoadProgress = INITIAL_PROGRESS;
             mCurrentState = new PageState(mContext,
@@ -459,6 +461,10 @@
         @Override
         public void onReceivedError(WebView view, int errorCode,
                 String description, String failingUrl) {
+            // Used for the syncCurrentState to use
+            // the failing url instead of using webview url
+            mReceivedError = true;
+
             if (errorCode != WebViewClient.ERROR_HOST_LOOKUP &&
                     errorCode != WebViewClient.ERROR_CONNECT &&
                     errorCode != WebViewClient.ERROR_BAD_URL &&
@@ -708,13 +714,22 @@
 
     private void syncCurrentState(WebView view, String url) {
         // Sync state (in case of stop/timeout)
-        mCurrentState.mUrl = view.getUrl();
+
+        if (mReceivedError) {
+            mCurrentState.mUrl =  url;
+            mCurrentState.mOriginalUrl = url;
+        } else {
+             mCurrentState.mUrl =  view.getUrl();
+             mCurrentState.mOriginalUrl = view.getOriginalUrl();
+             mCurrentState.mFavicon = view.getFavicon();
+        }
+
         if (mCurrentState.mUrl == null) {
             mCurrentState.mUrl = "";
         }
-        mCurrentState.mOriginalUrl = view.getOriginalUrl();
         mCurrentState.mTitle = view.getTitle();
-        mCurrentState.mFavicon = view.getFavicon();
+
+
         if (!URLUtil.isHttpsUrl(mCurrentState.mUrl)) {
             // In case we stop when loading an HTTPS page from an HTTP page
             // but before a provisional load occurred
