mirror of
https://github.com/firewalkwithm3/Sensor-Watch.git
synced 2024-11-22 19:20:30 +08:00
Merge pull request #336 from theAlexes/theAlexes/sanitize
fix undefined behavior found by clang's sanitize The compiler isn't completely assured of the possible range of this variable. Probably harmless, but it clears up a clang sanitize error.
This commit is contained in:
commit
63d6bc6aa0
|
@ -84,7 +84,7 @@ void watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequen
|
||||||
if (__builtin_popcount(frequency) != 1) return;
|
if (__builtin_popcount(frequency) != 1) return;
|
||||||
|
|
||||||
// this left-justifies the period in a 32-bit integer.
|
// this left-justifies the period in a 32-bit integer.
|
||||||
uint32_t tmp = frequency << 24;
|
uint32_t tmp = (frequency & 0xFF) << 24;
|
||||||
// now we can count the leading zeroes to get the value we need.
|
// now we can count the leading zeroes to get the value we need.
|
||||||
// 0x01 (1 Hz) will have 7 leading zeros for PER7. 0xF0 (128 Hz) will have no leading zeroes for PER0.
|
// 0x01 (1 Hz) will have 7 leading zeros for PER7. 0xF0 (128 Hz) will have no leading zeroes for PER0.
|
||||||
uint8_t per_n = __builtin_clz(tmp);
|
uint8_t per_n = __builtin_clz(tmp);
|
||||||
|
@ -99,7 +99,7 @@ void watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequen
|
||||||
|
|
||||||
void watch_rtc_disable_periodic_callback(uint8_t frequency) {
|
void watch_rtc_disable_periodic_callback(uint8_t frequency) {
|
||||||
if (__builtin_popcount(frequency) != 1) return;
|
if (__builtin_popcount(frequency) != 1) return;
|
||||||
uint8_t per_n = __builtin_clz(frequency << 24);
|
uint8_t per_n = __builtin_clz((frequency & 0xFF) << 24);
|
||||||
RTC->MODE2.INTENCLR.reg = 1 << per_n;
|
RTC->MODE2.INTENCLR.reg = 1 << per_n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ void watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequen
|
||||||
if (__builtin_popcount(frequency) != 1) return;
|
if (__builtin_popcount(frequency) != 1) return;
|
||||||
|
|
||||||
// this left-justifies the period in a 32-bit integer.
|
// this left-justifies the period in a 32-bit integer.
|
||||||
uint32_t tmp = frequency << 24;
|
uint32_t tmp = (frequency & 0xFF) << 24;
|
||||||
// now we can count the leading zeroes to get the value we need.
|
// now we can count the leading zeroes to get the value we need.
|
||||||
// 0x01 (1 Hz) will have 7 leading zeros for PER7. 0xF0 (128 Hz) will have no leading zeroes for PER0.
|
// 0x01 (1 Hz) will have 7 leading zeros for PER7. 0xF0 (128 Hz) will have no leading zeroes for PER0.
|
||||||
uint8_t per_n = __builtin_clz(tmp);
|
uint8_t per_n = __builtin_clz(tmp);
|
||||||
|
@ -105,7 +105,7 @@ void watch_rtc_register_periodic_callback(ext_irq_cb_t callback, uint8_t frequen
|
||||||
|
|
||||||
void watch_rtc_disable_periodic_callback(uint8_t frequency) {
|
void watch_rtc_disable_periodic_callback(uint8_t frequency) {
|
||||||
if (__builtin_popcount(frequency) != 1) return;
|
if (__builtin_popcount(frequency) != 1) return;
|
||||||
uint8_t per_n = __builtin_clz(frequency << 24);
|
uint8_t per_n = __builtin_clz((frequency & 0xFF) << 24);
|
||||||
if (tick_callbacks[per_n] != -1) {
|
if (tick_callbacks[per_n] != -1) {
|
||||||
emscripten_clear_interval(tick_callbacks[per_n]);
|
emscripten_clear_interval(tick_callbacks[per_n]);
|
||||||
tick_callbacks[per_n] = -1;
|
tick_callbacks[per_n] = -1;
|
||||||
|
|
Loading…
Reference in a new issue