Selaa lähdekoodia

can't shift by more or equal to length...

Philippe G 3 vuotta sitten
vanhempi
commit
f3c405579f
1 muutettua tiedostoa jossa 1 lisäystä ja 1 poistoa
  1. 1 1
      components/services/gpio_exp.c

+ 1 - 1
components/services/gpio_exp.c

@@ -463,7 +463,7 @@ void service_handler(void *arg) {
 				xSemaphoreGive(expander->mutex);
 				ESP_LOGD(TAG, "Handling GPIO %d reads 0x%04x and has 0x%04x pending", expander->first, expander->shadow, pending);
 				
-				for (int gpio = 31, clz; pending; pending <<= (clz + 1)) {
+				for (int gpio = 31, clz = 0; pending && clz < 31; pending <<= (clz + 1)) {
 					clz = __builtin_clz(pending);
 					gpio -= clz;
 					if (expander->isr[gpio].timer) xTimerReset(expander->isr[gpio].timer, 1);	// todo 0