From: Ryan Lortie Date: Thu, 9 Sep 2010 20:28:18 +0000 (-0400) Subject: Add 3 new restrictions to the schema compiler X-Git-Tag: 2.25.16~53 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f8cb2a60b9fb79f4d3719f842d71245d844ee9c0;p=platform%2Fupstream%2Fglib.git Add 3 new restrictions to the schema compiler - can not extend schemas that already have paths - can not form list of schemas that already have paths - the path of a list schema, if given, must end with ':/' --- diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c index 5f8a437..4867474 100644 --- a/gio/glib-compile-schemas.c +++ b/gio/glib-compile-schemas.c @@ -1055,7 +1055,9 @@ parse_state_start_schema (ParseState *state, if (list_of) { - if (!g_hash_table_lookup (state->schema_table, list_of)) + SchemaState *tmp; + + if (!(tmp = g_hash_table_lookup (state->schema_table, list_of))) { g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, @@ -1063,10 +1065,24 @@ parse_state_start_schema (ParseState *state, "existing schema '%s'"), id, list_of); return; } + + if (tmp->path) + { + g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, + _("Can not be a list of a schema with a path")); + return; + } } if (extends) { + if (extends->path) + { + g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, + _("Can not extend a schema with a path")); + return; + } + if (list_of) { if (extends->list_of == NULL) @@ -1104,6 +1120,13 @@ parse_state_start_schema (ParseState *state, return; } + if (path && list_of && !g_str_has_suffix (path, ":/")) + { + g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, + _("the path of a list must end with ':/'")); + return; + } + state->schema_state = schema_state_new (path, gettext_domain, extends, extends_name, list_of); g_hash_table_insert (state->schema_table, g_strdup (id),