[glib] Add 3 new restrictions to the schema compiler
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Add 3 new restrictions to the schema compiler
- Date: Thu, 9 Sep 2010 20:44:54 +0000 (UTC)
commit f8cb2a60b9fb79f4d3719f842d71245d844ee9c0
Author: Ryan Lortie <desrt desrt ca>
Date: Thu Sep 9 16:28:18 2010 -0400
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 ':/'
gio/glib-compile-schemas.c | 25 ++++++++++++++++++++++++-
1 files changed, 24 insertions(+), 1 deletions(-)
---
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),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]