aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/cpu.ts
diff options
context:
space:
mode:
authorUri Shaked2020-12-12 14:10:31 +0200
committerUri Shaked2020-12-12 14:10:31 +0200
commit18a19dcbd701f944a066b3e455464849820bf2f6 (patch)
tree92c96d6f450685f5a6269b56962b99cfa05e7914 /src/cpu/cpu.ts
parentchore(demo): upgrade monaco editor to 0.21.2 (diff)
downloadavr8js-18a19dcbd701f944a066b3e455464849820bf2f6.tar.gz
avr8js-18a19dcbd701f944a066b3e455464849820bf2f6.tar.bz2
avr8js-18a19dcbd701f944a066b3e455464849820bf2f6.zip
fix(cpu): event system issue
`updateClockEvent()` and `clearClockEvent()` would sometimes mess up the list of events. This could cause unexpected behavior when you have multiple timers running. Also added regression tests for these methods.
Diffstat (limited to '')
-rw-r--r--src/cpu/cpu.ts4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/cpu/cpu.ts b/src/cpu/cpu.ts
index fb98786..e7a2544 100644
--- a/src/cpu/cpu.ts
+++ b/src/cpu/cpu.ts
@@ -186,7 +186,7 @@ export class CPU implements ICPU {
}
updateClockEvent(callback: AVRClockEventCallback, cycles: number) {
- const entry = this.clockEvents.find((item) => (item.callback = callback));
+ const entry = this.clockEvents.find((item) => item.callback === callback);
if (entry) {
entry.cycles = this.cycles + Math.max(1, cycles);
this.updateClockEvents();
@@ -196,7 +196,7 @@ export class CPU implements ICPU {
}
clearClockEvent(callback: AVRClockEventCallback) {
- const index = this.clockEvents.findIndex((item) => (item.callback = callback));
+ const index = this.clockEvents.findIndex((item) => item.callback === callback);
if (index >= 0) {
this.clockEvents.splice(index, 1);
this.updateClockEvents();