[seed] Closure/Callbacks as return values - currently not handled, but prevents segfaults
- From: Alan Knowles <alank src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [seed] Closure/Callbacks as return values - currently not handled, but prevents segfaults
- Date: Mon, 5 Jul 2010 05:57:05 +0000 (UTC)
commit 5bab9a93c01d2063ec0d70b28d09ddf2ad8747a5
Author: Alan Knowles <alan akbkhome com>
Date: Mon Jul 5 13:55:12 2010 +0800
Closure/Callbacks as return values - currently not handled, but prevents segfaults
example : GLib.log_set_default_handler(f,null);
Returns (f) the callback, our code does not currently handle this so we probably just return null
libseed/seed-types.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/libseed/seed-types.c b/libseed/seed-types.c
index 67fa9e5..67af39e 100644
--- a/libseed/seed-types.c
+++ b/libseed/seed-types.c
@@ -168,6 +168,14 @@ seed_release_arg (GITransfer transfer,
{
interface_info = g_type_info_get_interface (type_info);
+ GIInfoType interface_type = g_base_info_get_type (interface_info);
+ if (interface_type == GI_INFO_TYPE_CALLBACK)
+ {
+ /* FIXME: - callback returns are not handled yet */
+ g_base_info_unref (interface_info);
+ break;
+ }
+
gtype =
g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *)
interface_info);
@@ -888,7 +896,17 @@ seed_gi_argument_make_js (JSContextRef ctx,
return strukt;
}
+ else if (interface_type == GI_INFO_TYPE_CALLBACK)
+ {
+ /* FIXME: return values of type callback are not handled yet. */
+ g_base_info_unref (interface);
+ return FALSE;
+ }
+ /* fall through - other types?? */
+ g_base_info_unref (interface);
+ return FALSE;
}
+
case GI_TYPE_TAG_GLIST:
{
GITypeInfo *list_type;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]