Add missing allocation checks where needed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38785 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -238,11 +238,18 @@ Debugger::MessageReceived(BMessage* message)
|
|||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
case MSG_SHOW_TEAMS_WINDOW:
|
case MSG_SHOW_TEAMS_WINDOW:
|
||||||
{
|
{
|
||||||
if (fTeamsWindow)
|
if (fTeamsWindow) {
|
||||||
fTeamsWindow->Activate(true);
|
fTeamsWindow->Activate(true);
|
||||||
else {
|
break;
|
||||||
fTeamsWindow = new(std::nothrow) TeamsWindow(&fSettingsManager);
|
}
|
||||||
fTeamsWindow->Show();
|
|
||||||
|
try {
|
||||||
|
fTeamsWindow = TeamsWindow::Create(&fSettingsManager);
|
||||||
|
if (fTeamsWindow != NULL)
|
||||||
|
fTeamsWindow->Show();
|
||||||
|
} catch(...) {
|
||||||
|
// TODO: Notify the user!
|
||||||
|
fprintf(stderr, "Error: Failed to create Teams window\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -343,8 +350,10 @@ Debugger::ArgvReceived(int32 argc, char** argv)
|
|||||||
_StartTeamDebugger(team, thread, stopInMain);
|
_StartTeamDebugger(team, thread, stopInMain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TeamDebugger::Listener
|
// TeamDebugger::Listener
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Debugger::TeamDebuggerStarted(TeamDebugger* debugger)
|
Debugger::TeamDebuggerStarted(TeamDebugger* debugger)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <new>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -242,8 +243,11 @@ TeamsListView::MessageReceived(BMessage* message)
|
|||||||
if (message->FindInt32("be:team", &team) != B_OK)
|
if (message->FindInt32("be:team", &team) != B_OK)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
AddItem(new TeamListItem(team));
|
TeamListItem* item = new(std::nothrow) TeamListItem(team);
|
||||||
SortItems(&TeamListItem::Compare);
|
if (item != NULL) {
|
||||||
|
AddItem(new TeamListItem(team));
|
||||||
|
SortItems(&TeamListItem::Compare);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -324,12 +328,14 @@ TeamsListView::_UpdateList()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!item || tmi.team != item->TeamID()) {
|
if (!item || tmi.team != item->TeamID()) {
|
||||||
// Team not found in known teams list: insert an new item
|
// Team not found in previously known teams list: insert a new item
|
||||||
TeamListItem* newItem = new TeamListItem(tmi);
|
TeamListItem* newItem = new(std::nothrow) TeamListItem(tmi);
|
||||||
if (!item)
|
if (newItem != NULL) {
|
||||||
index++; // No item with team id bigger found: insert at list end
|
if (!item)
|
||||||
|
index++; // No item found with bigger team id: insert at end
|
||||||
|
|
||||||
AddItem(newItem, index);
|
AddItem(newItem, index);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
index++; // Move list sync head.
|
index++; // Move list sync head.
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,38 +26,9 @@ TeamsWindow::TeamsWindow(SettingsManager* settingsManager)
|
|||||||
:
|
:
|
||||||
BWindow(BRect(100, 100, 500, 250), "Teams", B_DOCUMENT_WINDOW,
|
BWindow(BRect(100, 100, 500, 250), "Teams", B_DOCUMENT_WINDOW,
|
||||||
B_ASYNCHRONOUS_CONTROLS),
|
B_ASYNCHRONOUS_CONTROLS),
|
||||||
|
fTeamsListView(NULL),
|
||||||
fSettingsManager(settingsManager)
|
fSettingsManager(settingsManager)
|
||||||
{
|
{
|
||||||
BMessage settings;
|
|
||||||
_LoadSettings(settings);
|
|
||||||
|
|
||||||
BRect frame;
|
|
||||||
if (settings.FindRect("teams window frame", &frame) == B_OK) {
|
|
||||||
MoveTo(frame.LeftTop());
|
|
||||||
ResizeTo(frame.Width(), frame.Height());
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: add button to start a team debugger
|
|
||||||
// TODO: add UI to setup arguments and environ, launch a program
|
|
||||||
// and start his team debugger
|
|
||||||
|
|
||||||
// Add a teams list view
|
|
||||||
frame = Bounds();
|
|
||||||
frame.right -= B_V_SCROLL_BAR_WIDTH;
|
|
||||||
|
|
||||||
fTeamsListView = new TeamsListView(frame, "TeamsList");
|
|
||||||
fTeamsListView->SetInvocationMessage(new BMessage(kMsgDebugThisTeam));
|
|
||||||
|
|
||||||
BScrollView * teamsScroller = new BScrollView("TeamsListScroller",
|
|
||||||
fTeamsListView, B_FOLLOW_ALL_SIDES, 0, false, true, B_NO_BORDER);
|
|
||||||
|
|
||||||
AddChild(teamsScroller);
|
|
||||||
|
|
||||||
// small visual tweak
|
|
||||||
if (BScrollBar* scrollBar = teamsScroller->ScrollBar(B_VERTICAL)) {
|
|
||||||
scrollBar->MoveBy(0, -1);
|
|
||||||
scrollBar->ResizeBy(0, -(B_H_SCROLL_BAR_HEIGHT - 2));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -66,6 +37,22 @@ TeamsWindow::~TeamsWindow()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*static*/ TeamsWindow*
|
||||||
|
TeamsWindow::Create(SettingsManager* settingsManager)
|
||||||
|
{
|
||||||
|
TeamsWindow* self = new TeamsWindow(settingsManager);
|
||||||
|
|
||||||
|
try {
|
||||||
|
self->_Init();
|
||||||
|
} catch(...) {
|
||||||
|
delete self;
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TeamsWindow::MessageReceived(BMessage* message)
|
TeamsWindow::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
@@ -103,6 +90,42 @@ TeamsWindow::QuitRequested()
|
|||||||
// #pragma mark --
|
// #pragma mark --
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TeamsWindow::_Init()
|
||||||
|
{
|
||||||
|
BMessage settings;
|
||||||
|
_LoadSettings(settings);
|
||||||
|
|
||||||
|
BRect frame;
|
||||||
|
if (settings.FindRect("teams window frame", &frame) == B_OK) {
|
||||||
|
MoveTo(frame.LeftTop());
|
||||||
|
ResizeTo(frame.Width(), frame.Height());
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: add button to start a team debugger
|
||||||
|
// TODO: add UI to setup arguments and environ, launch a program
|
||||||
|
// and start his team debugger
|
||||||
|
|
||||||
|
// Add a teams list view
|
||||||
|
frame = Bounds();
|
||||||
|
frame.right -= B_V_SCROLL_BAR_WIDTH;
|
||||||
|
|
||||||
|
fTeamsListView = new TeamsListView(frame, "TeamsList");
|
||||||
|
fTeamsListView->SetInvocationMessage(new BMessage(kMsgDebugThisTeam));
|
||||||
|
|
||||||
|
BScrollView * teamsScroller = new BScrollView("TeamsListScroller",
|
||||||
|
fTeamsListView, B_FOLLOW_ALL_SIDES, 0, false, true, B_NO_BORDER);
|
||||||
|
|
||||||
|
AddChild(teamsScroller);
|
||||||
|
|
||||||
|
// small visual tweak
|
||||||
|
if (BScrollBar* scrollBar = teamsScroller->ScrollBar(B_VERTICAL)) {
|
||||||
|
scrollBar->MoveBy(0, -1);
|
||||||
|
scrollBar->ResizeBy(0, -(B_H_SCROLL_BAR_HEIGHT - 2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
TeamsWindow::_OpenSettings(BFile& file, uint32 mode)
|
TeamsWindow::_OpenSettings(BFile& file, uint32 mode)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,11 +19,14 @@ public:
|
|||||||
TeamsWindow(SettingsManager* settingsManager);
|
TeamsWindow(SettingsManager* settingsManager);
|
||||||
virtual ~TeamsWindow();
|
virtual ~TeamsWindow();
|
||||||
|
|
||||||
|
static TeamsWindow* Create(SettingsManager* settingsManager);
|
||||||
|
// throws
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage* message);
|
virtual void MessageReceived(BMessage* message);
|
||||||
virtual bool QuitRequested();
|
virtual bool QuitRequested();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void _Init();
|
||||||
status_t _OpenSettings(BFile& file, uint32 mode);
|
status_t _OpenSettings(BFile& file, uint32 mode);
|
||||||
status_t _LoadSettings(BMessage& settings);
|
status_t _LoadSettings(BMessage& settings);
|
||||||
status_t _SaveSettings();
|
status_t _SaveSettings();
|
||||||
|
|||||||
Reference in New Issue
Block a user