diff --git a/thunar/thunar-path-entry.c b/thunar/thunar-path-entry.c
index 6b2ac95fa8ba051302045ce889729805eec1d132..6ce77f3387888c14b765e70efcc86d021d0af813 100644
--- a/thunar/thunar-path-entry.c
+++ b/thunar/thunar-path-entry.c
@@ -1154,10 +1154,11 @@ void
 thunar_path_entry_set_current_file (ThunarPathEntry *path_entry,
                                     ThunarFile      *current_file)
 {
-  GFile *file;
-  gchar *text;
-  gchar *unescaped;
-  gchar *tmp;
+  GFile    *file;
+  gchar    *text;
+  gchar    *unescaped;
+  gchar    *tmp;
+  gboolean  is_uri = FALSE;
 
   _thunar_return_if_fail (THUNAR_IS_PATH_ENTRY (path_entry));
   _thunar_return_if_fail (current_file == NULL || THUNAR_IS_FILE (current_file));
@@ -1178,12 +1179,16 @@ thunar_path_entry_set_current_file (ThunarPathEntry *path_entry,
 
           /* if there is no local path, use the URI (which always works) */
           if (text == NULL)
-            text = g_file_get_uri (file);
+            {
+              text = g_file_get_uri (file);
+              is_uri = TRUE;
+            }
         }
       else
         {
           /* not a native file, use the URI */
           text = g_file_get_uri (file);
+          is_uri = TRUE;
         }
 
       /* if the file is a directory, end with a / to avoid loading the parent
@@ -1197,8 +1202,9 @@ thunar_path_entry_set_current_file (ThunarPathEntry *path_entry,
         }
     }
 
-  unescaped = g_uri_unescape_string (text, NULL);
-  if (unescaped == NULL)
+  if (is_uri)
+    unescaped = g_uri_unescape_string (text, NULL);
+  else
     unescaped = g_strdup (text);
   g_free (text);