Re: [Vala] warning: format not a string literal
- From: Abderrahim Kitouni <a kitouni gmail com>
- To: Travis Beaty <twbeaty gmail com>
- Cc: vala-list gnome org
- Subject: Re: [Vala] warning: format not a string literal
- Date: Tue, 19 Oct 2010 22:01:44 +0100
Hi,
في ث، 19-10-2010 عند 15:19 -0500 ، كتب Travis Beaty:
Hello everyone.
I am working on a little test code to learn Vala. I am getting the
following warning from compiler:
/home/.../ValaTest.vala.c: In function
‘vala_test_vala_test_delete_event_this’:
/home/.../ValaTest.vala.c:129: warning: format not a string literal and
no format arguments
This warning comes from the C compiler. These can usually be safely
ignored (but see below).
Here is the method I feel is responsible for this:
private bool delete_event_this() {
var msg = new MessageDialog(this, DialogFlags.MODAL,
MessageType.INFO, ButtonsType.OK,
"I've been clicked " + clicks.to_string() + " times!");
msg.run();
stdout.printf("I was clicked " + clicks.to_string() + " times!\n");
The warning is caused by this line ^^
you are passing a non-constant string to printf, this is potentially a
security risk (e.g. if your string is constructed from user input).
The normal use of printf is to pass a constant string format, and
arguments (assuming clicks is an int):
stdout.printf("I was clicked %d times!\n", clicks);
If you prefer constructing your string by using concatenation, you can
still use puts instead of printf.
And a last tip : a nicer way to do the convertion to string and the
concatenation is to use string templates (with the leading @):
@"I was clicked $clicked times"
HTH,
Abderrahim
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]