Comments (2)
To be precise, this is a read, not an assignment, but that doesn't matter, out of bounds is out of bounds.
Now, let's see: RCSwitch::timings[i + 1]
may end up accessing RCSwitch::timings[changeCount]
. Moreover, the largest value changeCount
attains is RCSWITCH_MAX_CHANGES
, thanks to the check in RCSwitch::handleInterrupt()
.
Then, right before receiveProtocol
is invoked, changeCount
gets decremented. Thus, the maximal value for changeCount
we ever see in receiveProtocol()
is RCSWITCH_MAX_CHANGES-1
.
The maximal value i
can attain is changeCount-1
, thus RCSWITCH_MAX_CHANGES-2
. But that suggests to me that the access above actually is always correct.
Am I missing something? If not, then there is no bug. But regardless of that, I think this code is too convoluted for its own good, and should be cleaned up.
from rc-switch.
Well you might be right. I was having a lot periodically problems on a ESP8266 and began looking for possible causes.
Most likely those issues had something to do with the interrupt not being placed in ram as suggested elsewhere. Thanks for your time and effort.
from rc-switch.
Related Issues (20)
- Add protocol with 12 bits preamble
- Pairing RF Remotes with Arduino without change in code
- can't decode 433mhz with esp32 HOT 5
- Problems with an old library 2013 but with an important modification
- Adding new protocol to RCSwitch.cpp
- Esp32 issue... another one, yes... HOT 1
- How to implement a custom protocol?
- Which pin for Arduino pro mini AtMega328P 5V
- control with more than one command
- Problem with recieved value HOT 1
- How to send()? HOT 1
- How the ISR function handle the filtering out first high pulse in SYNC bit
- void RCSwitch::disableReceive()
- ReceiveDemo_Advanced work with Platform.IO and VSCode HOT 1
- How can i modify this protocol? HOT 5
- Cant receive anything with receive demo HOT 1
- Small contribution
- SURNICE: receiver and transmitter HOT 1
- Protocol 6 optimization doubt
- A modest proposal - expose the interrupt so a user can write a callback function.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rc-switch.