diff --git a/src/firmata/firmata.c b/src/firmata/firmata.c index 563ecce..18a9a61 100644 --- a/src/firmata/firmata.c +++ b/src/firmata/firmata.c @@ -245,9 +245,9 @@ firmata_endParse(t_firmata* firmata) printf("i2c reply is %d\n", firmata->i2cmsg[addr][reg]); #endif } else { - struct _firmata* devs = firmata->devs[0]; - int i = 0; - if (devs != NULL) { + if (firmata->devs != NULL) { + struct _firmata* devs = firmata->devs[0]; + int i = 0; for (i; i < firmata->dev_count; i++, devs++) { if (devs != NULL) { if (firmata->parse_buff[1] == devs->feature) { diff --git a/src/firmata/firmata_mraa.c b/src/firmata/firmata_mraa.c index d2d441b..8515cda 100644 --- a/src/firmata/firmata_mraa.c +++ b/src/firmata/firmata_mraa.c @@ -464,6 +464,10 @@ mraa_firmata_plat_init(const char* uart_dev) } firmata_dev = firmata_new(uart_dev); + if (firmata_dev == NULL) { + free(b); + return NULL; + } // if this isn't working then we have an issue with our uart while (!firmata_dev->isReady) {