Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/activity
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-07-20 17:50:49 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-07-20 17:50:49 (GMT)
commitcb6d459815e2e1407a2f93c8c7d3406183369d5e (patch)
tree027661e5429d9d0745abe1a2c6a407046b6d5a24 /sugar/activity
parent9ce80ca95870d27faeb9408a23c8c1f8eaf9d10a (diff)
Fix some temp file leaks.
Diffstat (limited to 'sugar/activity')
-rw-r--r--sugar/activity/activity.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/sugar/activity/activity.py b/sugar/activity/activity.py
index ffa46d9..a616ccd 100644
--- a/sugar/activity/activity.py
+++ b/sugar/activity/activity.py
@@ -234,6 +234,7 @@ class Activity(Window, gtk.Container):
self._internal_joined_cb(self._shared_activity, True, None)
self._bus = ActivityService(self)
+ self._owns_file = False
if handle.object_id:
self._jobject = datastore.get(handle.object_id)
@@ -346,9 +347,13 @@ class Activity(Window, gtk.Container):
else:
self.metadata['preview'] = self._preview
try:
- file_path = os.path.join(tempfile.gettempdir(), '%i' % time.time())
- self.write_file(file_path)
- self._jobject.file_path = file_path
+ if self._jobject.file_path:
+ self.write_file(self._jobject.file_path)
+ else:
+ file_path = os.path.join(tempfile.gettempdir(), '%i' % time.time())
+ self.write_file(file_path)
+ self._owns_file = True
+ self._jobject.file_path = file_path
except NotImplementedError:
pass
datastore.write(self._jobject,
@@ -409,6 +414,13 @@ class Activity(Window, gtk.Container):
self._preview = self._get_preview()
self.save()
+
+ if self._jobject:
+ if self._owns_file and os.path.isfile(self._jobject.file_path):
+ os.remove(self._jobject.file_path)
+ self._owns_file = False
+ self._jobject.destroy()
+ self._jobject = None
def get_metadata(self):
if self._jobject: