summaryrefslogtreecommitdiff
path: root/src/qcam/main.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-02 01:30:41 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-11 17:42:02 +0300
commitda9b6bb196e0165342a414657edfc5aaf165baa5 (patch)
tree82dddf1faf7e571f1a7781a96f70b0d92b60115b /src/qcam/main.cpp
parent1f7f7a72ed47a4a9cbfcda9dc26f490d5ef7b1af (diff)
base: thread: Fix recursive calls to dispatchMessages()
There are use cases for calling the dispatchMessages() function recursively, from within a message handler. This can be used, for instance, to force delivery of messages posted to a thread concurrently to stopping the thread. This currently causes access, in the outer dispatchMessages() call, to iterators that have been invalidated by erasing list elements in the recursive call, leading to undefined behaviour (most likely double-free or other crashes). Fix it by only erasing messages from the list at the end of the outer call, identified using a recursion counter. Bug: https://bugs.libcamera.org/show_bug.cgi?id=26 Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Tested-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/qcam/main.cpp')
0 files changed, 0 insertions, 0 deletions