Check whether id is valid when adding to weak map.
authorCheng Zhao <zcbenz@gmail.com>
Sat, 4 May 2013 14:57:17 +0000 (22:57 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Sat, 4 May 2013 14:57:17 +0000 (22:57 +0800)
It's possible that the object has been added to weak map before and then
erased, so having an id property doesn't mean it's added in the weak map.

browser/atom/objects_registry.coffee

index f921eb6..73613ae 100644 (file)
@@ -59,7 +59,7 @@ process.on 'ATOM_BROWSER_INTERNAL_NEW', (obj) ->
 exports.add = (processId, routingId, obj) ->
   # Some native objects may already been added to objectsWeakMap, be care not
   # to add it twice.
-  objectsWeakMap.add obj unless obj.id?
+  objectsWeakMap.add obj unless obj.id? and objectsWeakMap.has obj.id
 
   # Store and reference the object, then return the storeId which points to
   # where the object is stored. The caller can later dereference the object