[vala] vapigen: fix a crash if type_name is used for pointer arguments



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]