[vala] vapigen: fix a crash if type_name is used for pointer arguments
- From: Evan Nemerson <evann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] vapigen: fix a crash if type_name is used for pointer arguments
- Date: Fri, 9 Apr 2010 10:34:42 +0000 (UTC)
commit ce5970c5bf7bf7925b0830054da067c1c89e7b0f
Author: Evan Nemerson <evan coeus-group com>
Date: Thu Apr 1 13:32:58 2010 -0700
vapigen: fix a crash if type_name is used for pointer arguments
Fixes bug 614348.
.../gstreamer-0.10/gstreamer-0.10.metadata | 8 ++++----
vapigen/valagidlparser.vala | 9 ++++++++-
2 files changed, 12 insertions(+), 5 deletions(-)
---
diff --git a/vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata b/vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata
index dcd29d3..f516fe9 100644
--- a/vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata
+++ b/vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata
@@ -458,8 +458,8 @@ gst_tag_list_add ellipsis="1"
gst_tag_list_add_values ellipsis="1"
gst_tag_list_get_boolean.value is_out="1"
gst_tag_list_get_boolean_index.value is_out="1"
-gst_tag_list_get_char.value is_out="1" type_name="char"
-gst_tag_list_get_char_index.value is_out="1" type_name="char"
+gst_tag_list_get_char.value type_name="char" is_out="1"
+gst_tag_list_get_char_index.value type_name="char" is_out="1"
gst_tag_list_get_date.value is_out="1" nullable="1" value_owned="1"
gst_tag_list_get_date_index.value is_out="1" nullable="1" value_owned="1"
gst_tag_list_get_double.value is_out="1"
@@ -476,8 +476,8 @@ gst_tag_list_get_pointer.value is_out="1"
gst_tag_list_get_pointer_index.value is_out="1"
gst_tag_list_get_string.value is_out="1" value_owned="1"
gst_tag_list_get_string_index.value is_out="1" value_owned="1"
-gst_tag_list_get_uchar.value is_out="1" type_name="uchar"
-gst_tag_list_get_uchar_index.value is_out="1" type_name="uchar"
+gst_tag_list_get_uchar.value type_name="uchar" is_out="1"
+gst_tag_list_get_uchar_index.value type_name="uchar" is_out="1"
gst_tag_list_get_uint.value is_out="1"
gst_tag_list_get_uint64.value is_out="1"
gst_tag_list_get_uint64_index.value is_out="1"
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index d2e739e..727f573 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -1764,7 +1764,14 @@ public class Vala.GIdlParser : CodeVisitor {
set_delegate_target_pos = true;
delegate_target_pos = eval (nv[1]).to_double ();
} else if (nv[0] == "type_name") {
- ((UnresolvedType) param_type).unresolved_symbol = new UnresolvedSymbol (null, eval (nv[1]));
+ var sym = new UnresolvedSymbol (null, eval (nv[1]));
+ if (param_type is UnresolvedType) {
+ ((UnresolvedType) param_type).unresolved_symbol = sym;
+ } else {
+ // Overwrite old param_type, so "type_name" must be before any
+ // other param type modifying metadata
+ p.parameter_type = param_type = new UnresolvedType.from_symbol (sym, return_type.source_reference);
+ }
} else if (nv[0] == "ctype") {
p.ctype = eval (nv[1]);
} else if (nv[0] == "type_arguments") {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]