From d19e62d8672b679914d1f7639f6e69d49be25ae0 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Mon, 20 May 2013 14:55:46 +0800 Subject: [PATCH] Erase window from weak map immediately after it's destroyed. Otherwise it could happend that developers accessed the window after it's destroyed but before it's GCed. --- browser/atom/objects_registry.coffee | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/browser/atom/objects_registry.coffee b/browser/atom/objects_registry.coffee index 3dcdd58135d4..ccd2a9135091 100644 --- a/browser/atom/objects_registry.coffee +++ b/browser/atom/objects_registry.coffee @@ -55,7 +55,10 @@ process.on 'ATOM_BROWSER_INTERNAL_NEW', (obj) -> objectsWeakMap.add obj # Also remember all windows. - windowsWeakMap.add obj if obj.constructor is BrowserWindow + if obj.constructor is BrowserWindow + id = windowsWeakMap.add obj + obj.on 'destroyed', -> + windowsWeakMap.remove id exports.add = (processId, routingId, obj) -> # Some native objects may already been added to objectsWeakMap, be care not