aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConfuSomu2021-06-25 21:20:27 -0400
committerConfuSomu2021-06-25 21:20:27 -0400
commit0490fe7cbe0d55815723b942fa7ce4a86e540565 (patch)
treebf17703fce9b0248cf05fd496c1a41c3d6d9e439
parent6eb39240a6213ffd78d52ee8796e8e5a9723c44f (diff)
downloadpico-watch-0490fe7cbe0d55815723b942fa7ce4a86e540565.tar
pico-watch-0490fe7cbe0d55815723b942fa7ce4a86e540565.tar.gz
pico-watch-0490fe7cbe0d55815723b942fa7ce4a86e540565.zip
Remove BaseApp ptr from open_apps after deleting it
-rw-r--r--app_manager.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/app_manager.cpp b/app_manager.cpp
index 3132efd..2926921 100644
--- a/app_manager.cpp
+++ b/app_manager.cpp
@@ -77,13 +77,17 @@ int app_btnpressed(int app_id, uint gpio, unsigned long delta) {
int app_destroy(int app_id) {
BaseApp* to_destroy;
+ // FIXME: Does not work if the app is not open. An invalid item tries to get freed.
+ int to_delete_id = 0;
for (auto app : open_apps) {
- if (app_id == app->app_id)
+ if (app_id == app->app_id) {
to_destroy = app;
+ break;
+ }
+ to_delete_id++;
}
delete to_destroy;
- // FIXME: Remove app from list
- //open_apps.erase(std::remove(open_apps.begin(), open_apps.end(), to_destroy), open_apps.end()); // See https://stackoverflow.com/a/27306171/15578170
+ open_apps.erase(open_apps.begin() + to_delete_id);
APPS_IS_INIT[app_id] = 0;
return 0;