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, <[email protected] escreveu:
>
> > Send vala-list mailing list submissions to
> > [email protected]
> >
> > 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
> > [email protected]
> >
> > You can reach the person managing the list at
> > [email protected]
> >
> > 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 <[email protected]>
> > To: [email protected]
> > Subject: [Vala] error: use of possibly unassigned local variable
> > Message-ID:
> > <[email protected]>
> > 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
> > [email protected]
> > https://mail.gnome.org/mailman/listinfo/vala-list
> >
> >
> > ------------------------------
> >
> > End of vala-list Digest, Vol 133, Issue 6
> > *****************************************
> >
> _______________________________________________
> vala-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/vala-list
_______________________________________________
vala-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/vala-list