diff options
author | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2019-02-18 10:39:34 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@automotivelinux.org> | 2019-02-18 10:39:34 +0000 |
commit | ec58658f638a8d433f75d64807c0af4db6987e5a (patch) | |
tree | adaa96f23b7a872dd4bbd2b08e83d8eb11ccd32e | |
parent | e9e1d37d422da00f6b4c53fce9dccfd0ca7138db (diff) | |
parent | 41060cd08cbc3b42ed59b9e117e8769f43295316 (diff) |
Merge "Fix memory corruption issue when unregistering surfaces" into flounderflounder_6.0.5flounder/6.0.56.0.5flounder
-rw-r--r-- | src/runxdg.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/runxdg.cpp b/src/runxdg.cpp index 356e24f..6b8018e 100644 --- a/src/runxdg.cpp +++ b/src/runxdg.cpp @@ -28,6 +28,7 @@ #include <sys/time.h> #include <sys/wait.h> +#include <algorithm> #include <cstdio> #include "cpptoml/cpptoml.h" @@ -518,14 +519,10 @@ void POSIXLauncher::register_surfpid (pid_t surf_pid) void POSIXLauncher::unregister_surfpid (pid_t surf_pid) { - auto itr = m_pid_v.begin(); - while (itr != m_pid_v.end()) { - if (*itr == surf_pid) { - m_pid_v.erase(itr++); - } else { - ++itr; - } - } + auto beg = m_pid_v.begin(); + auto end = m_pid_v.end(); + m_pid_v.erase(std::remove(beg, end, surf_pid), end); + AGL_DEBUG("Unregistered surface (id=%d sz=%u)", surf_pid, m_pid_v.size()); } pid_t POSIXLauncher::find_surfpid_by_rid (pid_t rid) |