diff --git a/nodes/assign.c b/nodes/assign.c index c680ea3..fb56b8e 100644 --- a/nodes/assign.c +++ b/nodes/assign.c @@ -58,21 +58,33 @@ create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEn has_payload = false; const config_setting_t *setting; - if ((setting = config_setting_get_member(config->options, "namespace"))) { - has_ns = true; - source.code.ns = env_resolve_constant(env, setting); - } - if ((setting = config_setting_get_member(config->options, "major"))) { - has_maj = true; - source.code.major = env_resolve_constant(env, setting); - } - if ((setting = config_setting_get_member(config->options, "minor"))) { - has_min = true; - source.code.minor = env_resolve_constant(env, setting); - } - if ((setting = config_setting_get_member(config->options, "payload"))) { - has_payload = true; - source.payload = env_resolve_constant(env, setting); + if (config->options) { + if ((setting = config_setting_get_member(config->options, "namespace"))) { + has_ns = true; + source.code.ns = env_resolve_constant(env, setting); + } + if ((setting = config_setting_get_member(config->options, "major"))) { + has_maj = true; + source.code.major = env_resolve_constant(env, setting); + } + if ((setting = config_setting_get_member(config->options, "minor"))) { + has_min = true; + source.code.minor = env_resolve_constant(env, setting); + } + if ((setting = config_setting_get_member(config->options, "payload"))) { + has_payload = true; + source.payload = env_resolve_constant(env, setting); + } + } else { + // Prevent warning for uninitialized variable + source = (EventData) { + .code = { + .ns = 0, + .major = 0, + .minor = 0, + }, + .payload = 0, + }; } *node = (AssignGraphNode) { diff --git a/nodes/differentiate.c b/nodes/differentiate.c index 5546ca7..61a47ea 100644 --- a/nodes/differentiate.c +++ b/nodes/differentiate.c @@ -42,7 +42,6 @@ create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEn int64_t initial = 0; if (config->options) { - // FIXME check config->options for NULL in all node types initial = env_resolve_constant(env, config_setting_get_member(config->options, "initial")); } diff --git a/nodes/evdev.c b/nodes/evdev.c index bfa6b24..e2d2ccb 100644 --- a/nodes/evdev.c +++ b/nodes/evdev.c @@ -77,7 +77,7 @@ create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEn } const char *filename = NULL; bool should_grab = false; - if (config) { + if (config->options) { node->namespace = env_resolve_constant(env, config_setting_get_member(config->options, "namespace")); should_grab = env_resolve_constant(env, config_setting_get_member(config->options, "grab")) != 0; config_setting_lookup_string(config->options, "file", &filename); diff --git a/nodes/getchar.c b/nodes/getchar.c index 44eb9ed..99e03bb 100644 --- a/nodes/getchar.c +++ b/nodes/getchar.c @@ -70,7 +70,7 @@ create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEn .handle_io = handle_io, .enabled = true, }, - .namespace = env_resolve_constant(env, config_setting_get_member(config->options, "namespace")), + .namespace = config->options ? env_resolve_constant(env, config_setting_get_member(config->options, "namespace")) : 0, }; return &node->as_GraphNode; } diff --git a/nodes/modifiers.c b/nodes/modifiers.c index bf6a1c9..d034a00 100644 --- a/nodes/modifiers.c +++ b/nodes/modifiers.c @@ -30,8 +30,10 @@ handle_event(EventPositionBase * self, EventNode * event) static GraphNode * create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEnvironment * env) { - (void) config; - (void) env; + if (!config->options) { + return NULL; + } + ModifiersGraphNode * node = T_ALLOC(1, ModifiersGraphNode); if (!node) { return NULL; diff --git a/nodes/modify_predicate.c b/nodes/modify_predicate.c index ed8611f..4579c72 100644 --- a/nodes/modify_predicate.c +++ b/nodes/modify_predicate.c @@ -50,8 +50,10 @@ handle_event(EventPositionBase * self, EventNode * event) static GraphNode * create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEnvironment * env) { - (void) config; - (void) env; + if (!config->options) { + return NULL; + } + ModifyPredicateGraphNode * node = T_ALLOC(1, ModifyPredicateGraphNode); if (!node) { return NULL; diff --git a/nodes/router.c b/nodes/router.c index 5cd59b8..4214a8c 100644 --- a/nodes/router.c +++ b/nodes/router.c @@ -28,8 +28,10 @@ handle_event(EventPositionBase * self, EventNode * event) static GraphNode * create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEnvironment * env) { - (void) config; - (void) env; + if (!config->options) { + return NULL; + } + RouterGraphNode * node = T_ALLOC(1, RouterGraphNode); if (!node) { return NULL; diff --git a/nodes/uinput.c b/nodes/uinput.c index 533661e..f745c0d 100644 --- a/nodes/uinput.c +++ b/nodes/uinput.c @@ -78,6 +78,10 @@ handle_event(EventPositionBase * self, EventNode * event) static GraphNode * create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEnvironment * env) { + if (!config->options) { + return NULL; + } + UinputGraphNode * node = T_ALLOC(1, UinputGraphNode); if (!node) { return NULL;