vala r1158 - in trunk: . gobject
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r1158 - in trunk: . gobject
- Date: Mon, 24 Mar 2008 20:14:14 +0000 (GMT)
Author: juergbi
Date: Mon Mar 24 20:14:14 2008
New Revision: 1158
URL: http://svn.gnome.org/viewvc/vala?rev=1158&view=rev
Log:
2008-03-24 Juerg Billeter <j bitron ch>
* gobject/valaccodegenerator.vala,
gobject/valaccodegeneratormethod.vala: fix generated code for
methods returning structs
Modified:
trunk/ChangeLog
trunk/gobject/valaccodegenerator.vala
trunk/gobject/valaccodegeneratormethod.vala
Modified: trunk/gobject/valaccodegenerator.vala
==============================================================================
--- trunk/gobject/valaccodegenerator.vala (original)
+++ trunk/gobject/valaccodegenerator.vala Mon Mar 24 20:14:14 2008
@@ -518,7 +518,7 @@
header_type_member_declaration.append (cdecl);
var var_decl = new CCodeVariableDeclarator (f.get_cname ());
- var_decl.initializer = default_value_for_type (f.type_reference);
+ var_decl.initializer = default_value_for_type (f.type_reference, true);
if (f.initializer != null) {
var init = (CCodeExpression) f.initializer.ccodenode;
@@ -1055,7 +1055,7 @@
/* try to initialize uninitialized variables */
if (decl.initializer == null) {
- ((CCodeVariableDeclarator) decl.ccodenode).initializer = default_value_for_type (decl.type_reference);
+ ((CCodeVariableDeclarator) decl.ccodenode).initializer = default_value_for_type (decl.type_reference, true);
}
}
@@ -1460,7 +1460,7 @@
if (current_return_type is VoidType) {
cerror_block.add_statement (new CCodeReturnStatement ());
} else {
- cerror_block.add_statement (new CCodeReturnStatement (default_value_for_type (current_return_type)));
+ cerror_block.add_statement (new CCodeReturnStatement (default_value_for_type (current_return_type, false)));
}
var ccond = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, new CCodeIdentifier ("inner_error"), new CCodeConstant ("NULL"));
Modified: trunk/gobject/valaccodegeneratormethod.vala
==============================================================================
--- trunk/gobject/valaccodegeneratormethod.vala (original)
+++ trunk/gobject/valaccodegeneratormethod.vala Mon Mar 24 20:14:14 2008
@@ -676,7 +676,7 @@
} else {
ccheck.call = new CCodeIdentifier ("g_return_val_if_fail");
- var cdefault = default_value_for_type (ret_type);
+ var cdefault = default_value_for_type (ret_type, false);
if (cdefault != null) {
ccheck.add_argument (cdefault);
} else {
@@ -699,7 +699,7 @@
} else {
ccheck.call = new CCodeIdentifier ("g_return_val_if_fail");
- var cdefault = default_value_for_type (ret_type);
+ var cdefault = default_value_for_type (ret_type, false);
if (cdefault != null) {
ccheck.add_argument (cdefault);
} else {
@@ -719,13 +719,14 @@
return new CCodeExpressionStatement (cassert);
}
- private CCodeExpression default_value_for_type (DataType! type) {
+ private CCodeExpression default_value_for_type (DataType! type, bool initializer_expression) {
if ((type.data_type != null && type.data_type.is_reference_type ()) || type is PointerType || type is ArrayType) {
return new CCodeConstant ("NULL");
} else if (type.data_type != null && type.data_type.get_default_value () != null) {
return new CCodeConstant (type.data_type.get_default_value ());
- } else if (type.data_type is Struct) {
+ } else if (type.data_type is Struct && initializer_expression) {
// 0-initialize struct with struct initializer { 0 }
+ // only allowed as initializer expression in C
var clist = new CCodeInitializerList ();
clist.append (new CCodeConstant ("0"));
return clist;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]