Hi,

Thank you for your answer.  In fact, the_datum is a plain int.  So it cannot be 
NULL (error: Equality operation: `null'
and `int' are incompatible).

However, I found a workaround.  It seems that valac assumes out parameter to 
extern library functions are always
initialized, but not when they are called conditionally.

So, by changing a little the code, I got this to compile:

// Always return true
extern bool lib_initialized ();

// data is always set when work returns true
extern bool lib_work (out int data);

int main(string[] args) {
        int the_datum;
        if (lib_initialized ()) {
                bool has_datum = lib_work (out the_datum);
                if (has_datum) {
                        stdout.printf ("Hello, %d!\n", the_datum);
                }
        }
        return 0;
}

Le samedi 16 février 2019 à 12:52 -0200, Fernando Silva via vala-list a écrit :
> I think checking if (the_datum != null) should do
> 
> Em sáb, 16 de fev de 2019 10:00, <vala-list-requ...@gnome.org escreveu:
> 
> > Send vala-list mailing list submissions to
> >         vala-list@gnome.org
> > 
> > To subscribe or unsubscribe via the World Wide Web, visit
> >         https://mail.gnome.org/mailman/listinfo/vala-list
> > or, via email, send a message with subject or body 'help' to
> >         vala-list-requ...@gnome.org
> > 
> > You can reach the person managing the list at
> >         vala-list-ow...@gnome.org
> > 
> > When replying, please edit your Subject line so it is more specific
> > than "Re: Contents of vala-list digest..."
> > 
> > 
> > Today's Topics:
> > 
> >    1. error: use of possibly unassigned local variable (Vivien Kraus)
> > 
> > 
> > ----------------------------------------------------------------------
> > 
> > Message: 1
> > Date: Fri, 15 Feb 2019 21:28:45 +0100
> > From: Vivien Kraus <viv...@planete-kraus.eu>
> > To: vala-list@gnome.org
> > Subject: [Vala] error: use of possibly unassigned local variable
> > Message-ID:
> >         <40a1141df0d06b59ed0f87f3a6cafac285f45b4a.ca...@planete-kraus.eu>
> > Content-Type: text/plain; charset="UTF-8"
> > 
> > Hello list,
> > 
> > I am facing an inconvenient problem.
> > 
> > Suppose I have a C library, that I want to use from vala:
> > 
> > // Always return true
> > extern bool lib_initialized ();
> > 
> > // data is always set when work returns true
> > extern bool lib_work (out int data);
> > 
> > int main(string[] args) {
> >         int the_datum;
> >         bool has_datum = (lib_initialized () && lib_work (out the_datum));
> >         if (has_datum) {
> >                 stdout.printf ("Hello, %d!\n", the_datum);
> >         }
> >         return 0;
> > }
> > 
> > If I am to compile this (0.42.5, -C only, not link), I get an error
> > message:
> > 
> > test.vala:11.3-11.44: error: use of possibly unassigned local variable
> > `the_datum'
> >                 stdout.printf ("Hello, %d!\n", the_datum);
> >                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > Compilation failed: 1 error(s), 0 warning(s)
> > 
> > The workaround is obvious: initialize the_datum.  However, I like to run
> > my code under valgrind to detect when reading
> > from an uninitialized variable (I make lots of mistakes ^^), and so if
> > there is a bug in lib_work and I initialize
> > the_datum, then I will not be able to notice the problem.
> > 
> > Is it possible to instruct valac that it should not worry?  Or is it
> > possible to change this error to a simple warning?
> > 
> > Best regards
> > 
> > Vivien
> > 
> > 
> > 
> > 
> > ------------------------------
> > 
> > Subject: Digest Footer
> > 
> > _______________________________________________
> > vala-list mailing list
> > vala-list@gnome.org
> > https://mail.gnome.org/mailman/listinfo/vala-list
> > 
> > 
> > ------------------------------
> > 
> > End of vala-list Digest, Vol 133, Issue 6
> > *****************************************
> > 
> _______________________________________________
> vala-list mailing list
> vala-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/vala-list

_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to