summaryrefslogtreecommitdiff
path: root/girepository/girparser.c
diff options
context:
space:
mode:
authorPavel Holejsovsky <pholejs@src.gnome.org>2011-09-12 19:54:39 +0200
committerPavel Holejsovsky <pholejs@src.gnome.org>2011-09-12 20:16:32 +0200
commit9e903476ea20e0bc3593816b932eae6b0afd0f2e (patch)
tree3a0443ad5d8ac0e1441c0a0dde13576018b0ae96 /girepository/girparser.c
parenta3f849e8c6548ec17bd37cb406688dfe21ca961c (diff)
downloadgobject-introspection-9e903476ea20e0bc3593816b932eae6b0afd0f2e.tar.gz
Fix g_type_info_is_pointer() for overriden types of arguments.
Algorithm which detects whether argument type is pointer checks for trailing '*' characters in c:type .gir elements. This failed if ctype is either 'gpointer' or 'gconstpointer'. Add specific check for gpointer/gconstpointer types when deducing pointerness of the type. https://bugzilla.gnome.org/show_bug.cgi?id=658848
Diffstat (limited to 'girepository/girparser.c')
-rw-r--r--girepository/girparser.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/girepository/girparser.c b/girepository/girparser.c
index 6984e826..0a4a65d8 100644
--- a/girepository/girparser.c
+++ b/girepository/girparser.c
@@ -1947,6 +1947,10 @@ start_type (GMarkupParseContext *context,
const char *cp = ctype + strlen(ctype) - 1;
while (cp > ctype && *cp-- == '*')
pointer_depth++;
+
+ if (g_str_has_prefix (ctype, "gpointer")
+ || g_str_has_prefix (ctype, "gconstpointer"))
+ pointer_depth++;
}
if (ctx->current_typed->type == G_IR_NODE_PARAM &&