diff --git a/urogue/daemon.c b/urogue/daemon.c index 841c55f..e3f2ccb 100644 --- a/urogue/daemon.c +++ b/urogue/daemon.c @@ -282,11 +282,18 @@ do_fuses(int now) { if (--wire->d_time <= 0) { - fuse_arg arg; + if (wire->d_id < 0 || wire->d_id >= FUSE_MAX) + printf("Bad fuse id %d\n", wire->d_id); + else if (fuses[wire->d_id].func == NULL) + printf("No action for fuse %d!\n", wire->d_id); + else + { + fuse_arg arg; - arg.varg = wire->d_arg; + arg.varg = wire->d_arg; + fuses[wire->d_id].func(&arg); + } wire->d_type = EMPTY; - fuses[wire->d_id].func(&arg); demoncnt -= 1; } }