On Mon, May 26, 2014 at 09:16:11PM +0200, Lukas Slebodnik wrote:
On (26/05/14 18:39), Jakub Hrozek wrote:
On Mon, May 26, 2014 at 05:30:05PM +0200, Lukas Slebodnik wrote:
Thanks, I didn't see this earlier because I never used --recurse.
I modified the codegen a bit so than an invoker is called even if there are no properties. The invoker creates an empty array, adds nothing (the property getters would be inserted here by codegen) and returns.
The other way I was considering was checking for properties in the getall_handler in sssd, but I prefer to let the generated code do as much work as possible.
Crash is fixed. Static analysers did not found any issues.
There are few gcc warnings.
Ah, I haven't seen any with clang..
CC src/tests/sbus_tests-sbus_tests.o src/tests/sbus_tests.c:105:1: error: missing initializer for field ‘invoker_get_all’ of ‘const struct sbus_interface_meta’ [-Werror=missing-field-initializers] }; ^ In file included from ../sssd/src/tests/sbus_tests.c:34:0: src/sbus/sssd_dbus_meta.h:83:28: note: ‘invoker_get_all’ declared here sbus_method_invoker_fn invoker_get_all; ^ cc1: all warnings being treated as errors
Warning can be fixed with diff: diff --git a/src/tests/sbus_tests.c b/src/tests/sbus_tests.c index 31b91c4..fe6ee05 100644 --- a/src/tests/sbus_tests.c +++ b/src/tests/sbus_tests.c @@ -102,6 +102,7 @@ const struct sbus_interface_meta pilot_meta = { pilot_methods, NULL, /* no signals */ NULL, /* no properties */
- NULL, /* invoker function */
};
Thank you, I merged the diff.
static int blink_handler(struct sbus_request *req, void *data)
And the second warning: src/tests/sbus_codegen_tests.c: In function ‘check_arr_prop’: src/tests/sbus_codegen_tests.c:1226:30: error: ‘strings’ may be used uninitialized in this function [-Werror=maybe-uninitialized] ck_assert_str_eq(strings[1], pilot_path_array[1]); ^ cc1: all warnings being treated as errors
I am not sure about solution :-)
I think the warning was bogus. I simply initialized strings to NULL and then added some asserts to make sure that strings can be dereferenced when we get to the comparison. I hope this would also silence gcc, at least I haven't seen any warning with my test setup.
Thank you for fixing all issues.
Pavel has already tested patches. ACK++
LS
Thanks for the review, pushed all to master: bdbb5cd11752d79488e5d87b908103322e010df1 4f7f714e118e95896fac5239c7a8b529c39a4758 886d29fced0bcc1668a3cb99a5bca66ea486b3a4 2965f42fed62b77a5b0e7f6cd01c4be1072484f5 c43ed56bc5d29e189e529235a3ba4bc17cd1a95f