summaryrefslogtreecommitdiff
path: root/girepository
diff options
context:
space:
mode:
authorTommi Komulainen <tommi.komulainen@iki.fi>2008-10-23 17:42:25 +0000
committerTommi Komulainen <tko@src.gnome.org>2008-10-23 17:42:25 +0000
commit1842570d3329e47beb6aef836a7e7fdd0bc680c2 (patch)
treeb4190fccea95a8f9e280185614483eace5234a0f /girepository
parentb9713056e7bd9777c5b92e3ba0078effd301b157 (diff)
downloadgobject-introspection-1842570d3329e47beb6aef836a7e7fdd0bc680c2.tar.gz
Bug 556739 – transfer-ownership attribute should be mandatory in .gir
2008-10-23 Tommi Komulainen <tommi.komulainen@iki.fi> * girepository/girparser.c (parse_param_transfer): * giscanner/transformer.py (_create_parameter, _create_return): * giscanner/girwriter.py (_write_return, _write_parameter): * tools/generate.c (write_callable_info): always write and require "transfer-ownership" for return-values and parameters * tests/boxed.gir: * tests/invoke/testfns-1.0.gir: * tests/object.gir: * tests/scanner/DrawableAdditions.xml: * tests/scanner/GtkFrob-1.0-expected.tgir: * tests/scanner/annotation-1.0-expected.tgir: * tests/scanner/drawable-1.0-expected.tgir: * tests/scanner/drawable-injected-1.0-expected.gir: * tests/scanner/drawable-injected-1.0-expected.tgir: * tests/scanner/foo-1.0-expected.tgir: Updated svn path=/trunk/; revision=797
Diffstat (limited to 'girepository')
-rw-r--r--girepository/girparser.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/girepository/girparser.c b/girepository/girparser.c
index b92bc548..b898db4f 100644
--- a/girepository/girparser.c
+++ b/girepository/girparser.c
@@ -660,31 +660,29 @@ start_function (GMarkupParseContext *context,
static void
parse_param_transfer (GIrNodeParam *param, const gchar *transfer)
{
- if (transfer && strcmp (transfer, "none") == 0)
+ if (transfer == NULL)
+ {
+ g_warning ("required attribute 'transfer-ownership' missing");
+ }
+ else if (strcmp (transfer, "none") == 0)
{
param->transfer = FALSE;
param->shallow_transfer = FALSE;
}
- else if (transfer && strcmp (transfer, "container") == 0)
+ else if (strcmp (transfer, "container") == 0)
{
param->transfer = FALSE;
param->shallow_transfer = TRUE;
}
- else
+ else if (strcmp (transfer, "full") == 0)
{
- if (transfer)
- {
- if (strcmp (transfer, "full") != 0)
- g_warning ("Unknown transfer %s", transfer);
- else
- param->transfer = TRUE;
- }
- else if (param->in && !param->out)
- param->transfer = FALSE;
- else
- param->transfer = TRUE;
+ param->transfer = TRUE;
param->shallow_transfer = FALSE;
}
+ else
+ {
+ g_warning ("Unknown transfer-ownership value: %s", transfer);
+ }
}
static gboolean