]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix null pointer access on out parameter clearing
authorDidier 'Ptitjes <ptitjes@free.fr>
Tue, 28 Apr 2009 23:26:50 +0000 (01:26 +0200)
committerJürg Billeter <j@bitron.ch>
Thu, 14 May 2009 15:58:07 +0000 (17:58 +0200)
Fixes bug 580667.

Signed-off-by: Didier 'Ptitjes <ptitjes@free.fr>
codegen/valaccodemethodmodule.vala

index f1bdd9ac8447de2081d3cce1548b416b1ca452bb..26a51c34ac46dc1f1c895c6dd9be450763599a1c 100644 (file)
@@ -421,7 +421,12 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                                                } else {
                                                        // ensure that the passed reference for output parameter is cleared
                                                        var a = new CCodeAssignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (param.name)), new CCodeConstant ("NULL"));
-                                                       cinit.append (new CCodeExpressionStatement (a));
+                                                       var cblock = new CCodeBlock ();
+                                                       cblock.add_statement (new CCodeExpressionStatement (a));
+
+                                                       var condition = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, new CCodeIdentifier (param.name), new CCodeConstant ("NULL"));
+                                                       var if_statement = new CCodeIfStatement (condition, cblock);
+                                                       cinit.append (if_statement);
                                                }
                                        }
                                }