diff options
author | Tommi Komulainen <tommi.komulainen@iki.fi> | 2008-10-23 17:42:25 +0000 |
---|---|---|
committer | Tommi Komulainen <tko@src.gnome.org> | 2008-10-23 17:42:25 +0000 |
commit | 1842570d3329e47beb6aef836a7e7fdd0bc680c2 (patch) | |
tree | b4190fccea95a8f9e280185614483eace5234a0f /girepository | |
parent | b9713056e7bd9777c5b92e3ba0078effd301b157 (diff) | |
download | gobject-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.c | 26 |
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 |