From 560e976ee9c59d75907b5ef6ed2bc336719e37d3 Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Tue, 25 Apr 2017 17:27:42 +0200 Subject: [PATCH] extensionSystem: handle reloading broken extensions Some extensions out there may fail to reload. When that happens, we need to catch any exceptions so that we don't leave things in a broken state that could lead to leaving extensions enabled in the screen shield. https://bugzilla.gnome.org/show_bug.cgi?id=781728 --- js/ui/extensionSystem.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index ba332220b..1feaa2ff8 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -276,12 +276,20 @@ function _onVersionValidationChanged() { // temporarily disable them all enabledExtensions = []; for (let uuid in ExtensionUtils.extensions) - reloadExtension(ExtensionUtils.extensions[uuid]); + try { + reloadExtension(ExtensionUtils.extensions[uuid]); + } catch(e) { + logExtensionError(uuid, e); + } enabledExtensions = getEnabledExtensions(); if (Main.sessionMode.allowExtensions) { enabledExtensions.forEach(function(uuid) { - enableExtension(uuid); + try { + enableExtension(uuid); + } catch(e) { + logExtensionError(uuid, e); + } }); } }