[gjs] repo: Simplify namespace lookup code
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs] repo: Simplify namespace lookup code
- Date: Tue, 1 Oct 2013 22:37:56 +0000 (UTC)
commit 840cfc0ebbd078427133ab6e21d2c729634dbf19
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Mon Jul 1 20:34:45 2013 -0400
repo: Simplify namespace lookup code
gi/repo.c | 34 ++++++++++++++++------------------
1 files changed, 16 insertions(+), 18 deletions(-)
---
diff --git a/gi/repo.c b/gi/repo.c
index 65cc5dd..3b10d90 100644
--- a/gi/repo.c
+++ b/gi/repo.c
@@ -86,7 +86,7 @@ get_version_for_ns (JSContext *context,
return JS_TRUE;
}
-static JSObject*
+static JSBool
resolve_namespace_object(JSContext *context,
JSObject *repo_obj,
jsid ns_id,
@@ -95,16 +95,15 @@ resolve_namespace_object(JSContext *context,
GIRepository *repo;
GError *error;
char *version;
- JSObject *namespace;
JSObject *override;
jsval result;
+ JSObject *namespace = NULL;
+ JSBool ret = JS_FALSE;
JS_BeginRequest(context);
- if (!get_version_for_ns(context, repo_obj, ns_id, &version)) {
- JS_EndRequest(context);
- return NULL;
- }
+ if (!get_version_for_ns(context, repo_obj, ns_id, &version))
+ goto out;
repo = g_irepository_get_default();
@@ -114,10 +113,10 @@ resolve_namespace_object(JSContext *context,
gjs_throw(context,
"Requiring %s, version %s: %s",
ns_name, version?version:"none", error->message);
+
g_error_free(error);
g_free(version);
- JS_EndRequest(context);
- return NULL;
+ goto out;
}
g_free(version);
@@ -143,18 +142,19 @@ resolve_namespace_object(JSContext *context,
OBJECT_TO_JSVAL(override), /* callee */
0, /* argc */
NULL, /* argv */
- &result)) {
- JS_RemoveObjectRoot(context, &namespace);
- JS_EndRequest(context);
- return NULL;
- }
+ &result))
+ goto out;
gjs_debug(GJS_DEBUG_GNAMESPACE,
"Defined namespace '%s' %p in GIRepository %p", ns_name, namespace, repo_obj);
- JS_RemoveObjectRoot(context, &namespace);
+ ret = JS_TRUE;
+
+ out:
+ if (namespace)
+ JS_RemoveObjectRoot(context, &namespace);
JS_EndRequest(context);
- return namespace;
+ return ret;
}
/*
@@ -197,13 +197,11 @@ repo_new_resolve(JSContext *context,
if (priv == NULL) /* we are the prototype, or have the wrong class */
goto out;
- JS_BeginRequest(context);
- if (resolve_namespace_object(context, *obj, *id, name) == NULL) {
+ if (!resolve_namespace_object(context, *obj, *id, name)) {
ret = JS_FALSE;
} else {
*objp = *obj; /* store the object we defined the prop in */
}
- JS_EndRequest(context);
out:
g_free(name);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]