mirror of
https://github.com/mpv-player/mpv
synced 2025-03-02 12:20:57 +00:00
video_out.c: Fix a minor memory leak
The code that loops over possible video output drivers and tries to find a working one does not free and reallocate the 'struct vo' if a driver's preinit() call fails, but just overwrites the same struct instead. This means that any memory the failing driver allocated as a talloc subcontext will not be freed immediately. This is not even a real leak as the memory will be freed once the VO is closed, but it's still nicer to free things immediately. Add talloc_free_children() to free any such talloc subcontexts that were created during the failing preinit().
This commit is contained in:
parent
1db1773ec2
commit
59ffaa41f0
@ -364,6 +364,7 @@ struct vo *init_best_video_out(struct MPOpts *opts, struct vo_x11_state *x11,
|
||||
free(name);
|
||||
return vo; // success!
|
||||
}
|
||||
talloc_free_children(vo);
|
||||
}
|
||||
}
|
||||
// continue...
|
||||
@ -380,6 +381,7 @@ struct vo *init_best_video_out(struct MPOpts *opts, struct vo_x11_state *x11,
|
||||
vo->driver = video_driver;
|
||||
if (!vo_preinit(vo, vo_subdevice))
|
||||
return vo; // success!
|
||||
talloc_free_children(vo);
|
||||
}
|
||||
free(vo);
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user