13
0

Prevent double free of global observers

We accomplish this by explicitly setting the global_obs to NULL after
free'ing it. The crash that led to this fix can be replicated as such

$ sendosc localhost 3819 /set_surface i 8 i 159 i 8
$ sendosc localhost 3819 /set_surface i 0 i 0 i 0
$ sendosc localhost 3819 /set_surface i 0 i 0 i 0

In this example the observer is created, then free'd, and then free'd
*again* because the new observer was never made (sur->feedback[x]
checks fail)
This commit is contained in:
Nikolaus Gullotta 2020-03-09 13:02:38 -05:00
parent 379115a20e
commit 810b2fb78d
No known key found for this signature in database
GPG Key ID: 1056EA4349DFE244

View File

@ -2243,6 +2243,7 @@ OSC::global_feedback (OSCSurface* sur)
OSCGlobalObserver* o = sur->global_obs;
if (o) {
delete o;
sur->global_obs = NULL;
}
if (sur->feedback[4] || sur->feedback[3] || sur->feedback[5] || sur->feedback[6]) {