diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-07-20 17:50:49 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2007-07-20 17:50:49 (GMT) |
commit | cb6d459815e2e1407a2f93c8c7d3406183369d5e (patch) | |
tree | 027661e5429d9d0745abe1a2c6a407046b6d5a24 /sugar/activity/activity.py | |
parent | 9ce80ca95870d27faeb9408a23c8c1f8eaf9d10a (diff) |
Fix some temp file leaks.
Diffstat (limited to 'sugar/activity/activity.py')
-rw-r--r-- | sugar/activity/activity.py | 18 |
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: |