From b0a63e7a2aa97a9fe2898761d335ebee8ab6b34b Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Wed, 17 Sep 2008 14:38:12 +0000 Subject: [PATCH] implemented BarTeamInfo copy constructor and used it in TBarApp::Subscribe(). Also cleaned up a bit the code in TBarApp destructor. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27596 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/deskbar/BarApp.cpp | 25 +++++++++++++++---------- src/apps/deskbar/BarApp.h | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/apps/deskbar/BarApp.cpp b/src/apps/deskbar/BarApp.cpp index b828e1c831..ab4cca686d 100644 --- a/src/apps/deskbar/BarApp.cpp +++ b/src/apps/deskbar/BarApp.cpp @@ -148,11 +148,7 @@ TBarApp::~TBarApp() int32 teamCount = sBarTeamInfoList.CountItems(); for (int32 i = 0; i < teamCount; i++) { BarTeamInfo *barInfo = (BarTeamInfo *)sBarTeamInfoList.ItemAt(i); - delete barInfo->teams; - free(barInfo->sig); - delete barInfo->icon; - free(barInfo->name); - free(barInfo); + delete barInfo; } int32 subsCount = sSubscribers.CountItems(); @@ -551,11 +547,10 @@ TBarApp::Subscribe(const BMessenger &subscriber, BList *list) int32 numTeams = sBarTeamInfoList.CountItems(); for (int32 i = 0; i < numTeams; i++) { - BarTeamInfo *barInfo = (BarTeamInfo *)sBarTeamInfoList.ItemAt(i); - BList *tList = new BList(*(barInfo->teams)); - BBitmap *icon = new BBitmap(barInfo->icon); - ASSERT(icon); - list->AddItem(new BarTeamInfo(tList, barInfo->flags, strdup(barInfo->sig), icon, strdup(barInfo->name))); + BarTeamInfo *barInfo = (BarTeamInfo *)sBarTeamInfoList.ItemAt(i); + BarTeamInfo *newBarInfo = new (std::nothrow) BarTeamInfo(*barInfo); + if (newBarInfo != NULL) + list->AddItem(newBarInfo); } int32 subsCount = sSubscribers.CountItems(); @@ -734,6 +729,16 @@ BarTeamInfo::BarTeamInfo(BList *teams, uint32 flags, char *sig, BBitmap *icon, c } +BarTeamInfo::BarTeamInfo(const BarTeamInfo &info) + : teams(new BList(*info.teams)), + flags(info.flags), + sig(strdup(info.sig)), + icon(new BBitmap(*info.icon)), + name(strdup(info.name)) +{ +} + + BarTeamInfo::~BarTeamInfo() { delete teams; diff --git a/src/apps/deskbar/BarApp.h b/src/apps/deskbar/BarApp.h index 94dbd2247a..479421a1d8 100644 --- a/src/apps/deskbar/BarApp.h +++ b/src/apps/deskbar/BarApp.h @@ -52,6 +52,7 @@ class BarTeamInfo { public: BarTeamInfo(BList *teams, uint32 flags, char *sig, BBitmap *icon, char *name); + BarTeamInfo(const BarTeamInfo &info); ~BarTeamInfo(); BList *teams;