From 8a44f57228ca3b7bcf1e79848dec8f790870afc8 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 31 Aug 2018 12:48:00 -0400 Subject: [PATCH 1/4] objectManager: correct invalid index code in onNameVanished The object manager tries to synthesize interface removal events if the bus name of a remote object drops off the bus. The code has a bad typo in it, though: it confuses `objectPaths` (the list of all object paths) and `objectPath` (the object currently being processed this iteration of the loop). That leads to a failure to synthesize the interface removal events, and spew in the log. This commit corrects the objectPath/objectPaths confusion. --- js/misc/objectManager.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/misc/objectManager.js b/js/misc/objectManager.js index 1ce4f8342..5dffaa130 100644 --- a/js/misc/objectManager.js +++ b/js/misc/objectManager.js @@ -209,61 +209,62 @@ var ObjectManager = new Lang.Class({ let [objects] = result; if (!objects) { this._tryToCompleteLoad(); return; } let objectPaths = Object.keys(objects); for (let i = 0; i < objectPaths.length; i++) { let objectPath = objectPaths[i]; let object = objects[objectPath]; let interfaceNames = Object.getOwnPropertyNames(object); for (let j = 0; j < interfaceNames.length; j++) { let interfaceName = interfaceNames[j]; // Prevent load from completing until the interface is loaded this._numLoadInhibitors++; this._addInterface(objectPath, interfaceName, this._tryToCompleteLoad.bind(this)); } } this._tryToCompleteLoad(); }); }, _onNameVanished() { let objectPaths = Object.keys(this._objects); for (let i = 0; i < objectPaths.length; i++) { - let object = this._objects[objectPaths]; + let objectPath = objectPaths[i]; + let object = this._objects[objectPath]; let interfaceNames = Object.keys(object); for (let j = 0; i < interfaceNames.length; i++) { let interfaceName = interfaceNames[i]; if (object[interfaceName]) this._removeInterface(objectPath, interfaceName); } } }, _registerInterfaces(interfaces) { for (let i = 0; i < interfaces.length; i++) { let info = Gio.DBusInterfaceInfo.new_for_xml(interfaces[i]); this._interfaceInfos[info.name] = info; } }, getProxy(objectPath, interfaceName) { let object = this._objects[objectPath]; if (!object) return null; return object[interfaceName]; }, getProxiesForInterface(interfaceName) { let proxyList = this._interfaces[interfaceName]; -- 2.21.0