[gnome-shell] Util: update trySpawn to new gjs GError mapping



commit 317c6b77f3ec1f077014149c57d6b13f58083969
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Tue Jun 19 23:32:45 2012 +0200

    Util: update trySpawn to new gjs GError mapping
    
    Error rewriting code used an old version of the gjs GError support,
    and set a readonly .message property.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=678502

 js/misc/util.js |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)
---
diff --git a/js/misc/util.js b/js/misc/util.js
index 8839ed6..7d36676 100644
--- a/js/misc/util.js
+++ b/js/misc/util.js
@@ -89,18 +89,22 @@ function trySpawn(argv)
                                           GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
                                           null, null);
     } catch (err) {
-        if (err.code == GLib.SpawnError.G_SPAWN_ERROR_NOENT) {
-            err.message = _("Command not found");
-        } else {
+        /* Rewrite the error in case of ENOENT */
+        if (err.matches(GLib.SpawnError, GLib.SpawnError.NOENT)) {
+            throw new GLib.SpawnError({ code: GLib.SpawnError.NOENT,
+                                        message: _("Command not found") });
+        } else if (err instanceof GLib.Error) {
             // The exception from gjs contains an error string like:
             //   Error invoking GLib.spawn_command_line_async: Failed to
             //   execute child process "foo" (No such file or directory)
             // We are only interested in the part in the parentheses. (And
             // we can't pattern match the text, since it gets localized.)
-            err.message = err.message.replace(/.*\((.+)\)/, '$1');
+            let message = err.message.replace(/.*\((.+)\)/, '$1');
+            throw new (err.constructor)({ code: err.code,
+                                          message: message });
+        } else {
+            throw err;
         }
-
-        throw err;
     }
     // Dummy child watch; we don't want to double-fork internally
     // because then we lose the parent-child relationship, which



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]