diff --git a/mercurial/statprof.py b/mercurial/statprof.py
index ad4c0236168dc374e73f9fc0987c03bcd2a2d618_bWVyY3VyaWFsL3N0YXRwcm9mLnB5..f42cd5434cc20f06a0595efeede1c09dcd8a9694_bWVyY3VyaWFsL3N0YXRwcm9mLnB5 100755
--- a/mercurial/statprof.py
+++ b/mercurial/statprof.py
@@ -311,5 +311,6 @@
         state.accumulate_time(clock())
         state.last_start_time = None
         statprofpath = os.environ.get('STATPROF_DEST')
-        save_data(statprofpath)
+        if statprofpath:
+            save_data(statprofpath)
 
@@ -315,9 +316,6 @@
 
-def save_data(path=None):
-    try:
-        path = path or (os.environ['HOME'] + '/statprof.data')
-        file = open(path, "w+")
-
+def save_data(path):
+    with open(path, 'w+') as file:
         file.write(str(state.accumulated_time) + '\n')
         for sample in state.samples:
             time = str(sample.time)
@@ -326,13 +324,7 @@
                      for s in stack]
             file.write(time + '\0' + '\0'.join(sites) + '\n')
 
-        file.close()
-    except (IOError, OSError):
-        # The home directory probably didn't exist, or wasn't writable. Oh well.
-        pass
-
-def load_data(path=None):
-    path = path or (os.environ['HOME'] + '/statprof.data')
+def load_data(path):
     lines = open(path, 'r').read().splitlines()
 
     state.accumulated_time = float(lines[0])