diff --git a/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.cpp b/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.cpp index 2afe0d2a61..7a8dc891d3 100644 --- a/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.cpp +++ b/src/apps/debugger/user_interface/gui/teams_window/TeamsListView.cpp @@ -246,8 +246,10 @@ TeamsListView::MessageReceived(BMessage* message) TeamListItem* item = new(std::nothrow) TeamListItem(team); if (item != NULL) { - AddItem(item); - SortItems(&TeamListItem::Compare); + if (!AddItem(item)) + delete item; + else + SortItems(&TeamListItem::Compare); } break; } @@ -295,7 +297,11 @@ TeamsListView::_InitList() team_info tmi; while (get_next_team_info(&tmi_cookie, &tmi) == B_OK) { - TeamListItem* item = new TeamListItem(tmi); + TeamListItem* item = new(std::nothrow) TeamListItem(tmi); + if (!item) { + // Memory issue. Bail out. + break; + } if (tmi.team == B_SYSTEM_TEAM || tmi.team == fThisTeam) { @@ -303,7 +309,9 @@ TeamsListView::_InitList() item->SetEnabled(false); } - AddItem(item); + if (!AddItem(item)) + delete item; + } // SortItems(&TeamListItem::Compare); @@ -332,10 +340,17 @@ TeamsListView::_UpdateList() // Team not found in previously known teams list: insert a new item TeamListItem* newItem = new(std::nothrow) TeamListItem(tmi); if (newItem != NULL) { + bool added; + if (!item) // No item found with bigger team id: append at end - AddItem(newItem); + added = AddItem(newItem); else - AddItem(newItem, index); + added = AddItem(newItem, index); + + if (!added) { + // AddItem() failed! Memory Issue? + delete newItem; + } } } index++; // Move list sync head.