I talked about the issue with the or-condition before. Although I agree that it is most of the time preferable to avoid it, you can still use it if you know of the issue that is causing those problems, and avoid it.
My skills in C++ are too low to find and correct the code, but this is what happens:
Why using or seems to fail often
In short, it can output wrong results and it needs a couple of ticks to evaluate. Both combined can lead to other issues which may finally crash the app.