gobject-introspection r531 - trunk/girepository
- From: walters svn gnome org
- To: svn-commits-list gnome org
- Subject: gobject-introspection r531 - trunk/girepository
- Date: Fri, 29 Aug 2008 20:41:27 +0000 (UTC)
Author: walters
Date: Fri Aug 29 20:41:26 2008
New Revision: 531
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=531&view=rev
Log:
Handle alias chains correctly
* girepository/girparser.c: Handle chains of aliases
across modules by ensuring we fully qualify aliases
from includes.
Modified:
trunk/girepository/girparser.c
Modified: trunk/girepository/girparser.c
==============================================================================
--- trunk/girepository/girparser.c (original)
+++ trunk/girepository/girparser.c Fri Aug 29 20:41:26 2008
@@ -1086,12 +1086,27 @@
return FALSE;
}
+ value = g_strdup (target);
if (ctx->prefix_aliases)
- key = g_strdup_printf ("%s.%s", ctx->namespace, name);
+ {
+ key = g_strdup_printf ("%s.%s", ctx->namespace, name);
+ if (!strchr (target, '.'))
+ {
+ const BasicTypeInfo *basic = parse_basic (target);
+ if (!basic)
+ {
+ g_free (value);
+ /* For non-basic types, re-qualify the interface */
+ value = g_strdup_printf ("%s.%s", ctx->namespace, target);
+ }
+ }
+ }
else
- key = g_strdup (name);
+ {
+ key = g_strdup (name);
+ }
- g_hash_table_insert (ctx->aliases, key, g_strdup (target));
+ g_hash_table_insert (ctx->aliases, key, value);
return TRUE;
}
@@ -2213,9 +2228,8 @@
ctx->modules = g_list_append (ctx->modules, ctx->current_module);
state_switch (ctx, STATE_NAMESPACE);
+ goto out;
}
-
- goto out;
}
break;
@@ -2690,6 +2704,7 @@
ctx.namespace = namespace;
ctx.aliases = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
ctx.type_depth = 0;
+ ctx.current_module = NULL;
context = g_markup_parse_context_new (&firstpass_parser, 0, &ctx, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]