Don't leak saveComments vector in PreviewModel, also don't create unnecessary duplicate in PreviewView

This commit is contained in:
Simon Robertshaw 2013-03-09 12:19:02 +00:00
parent 189f96d35f
commit 6090f0b0aa
3 changed files with 16 additions and 13 deletions

View File

@ -166,7 +166,7 @@ void PreviewModel::UpdateComments(int pageNumber)
{
for(int i = 0; i < saveComments->size(); i++)
delete saveComments->at(i);
saveComments->clear();
delete saveComments;
saveComments = NULL;
}
@ -295,6 +295,7 @@ void PreviewModel::Update()
for(int i = 0; i < saveComments->size(); i++)
delete saveComments->at(i);
saveComments->clear();
delete saveComments;
saveComments = NULL;
}
commentsLoaded = true;

View File

@ -489,15 +489,18 @@ void PreviewView::NotifyCommentsPageChanged(PreviewModel * sender)
void PreviewView::NotifyCommentsChanged(PreviewModel * sender)
{
if(sender->GetComments())
{
comments = std::vector<SaveComment>(sender->GetComments()->begin(), sender->GetComments()->end());
}
else
{
comments.clear();
}
std::vector<SaveComment*> * comments = sender->GetComments();
for(int i = 0; i < commentComponents.size(); i++)
{
commentsPanel->RemoveChild(commentComponents[i]);
delete commentComponents[i];
}
commentComponents.clear();
commentTextComponents.clear();
commentsPanel->InnerSize = ui::Point(0, 0);
if(comments)
{
for(int i = 0; i < commentComponents.size(); i++)
{
@ -510,10 +513,10 @@ void PreviewView::NotifyCommentsChanged(PreviewModel * sender)
int currentY = 0;//-yOffset;
ui::Label * tempUsername;
ui::Label * tempComment;
for(int i = 0; i < comments.size(); i++)
for(int i = 0; i < comments->size(); i++)
{
int usernameY = currentY+5, commentY;
tempUsername = new ui::Label(ui::Point(5, currentY+5), ui::Point(Size.X-((XRES/2) + 13), 16), comments[i].authorName);
tempUsername = new ui::Label(ui::Point(5, currentY+5), ui::Point(Size.X-((XRES/2) + 13), 16), comments->at(i)->authorName);
tempUsername->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
tempUsername->Appearance.VerticalAlign = ui::Appearance::AlignBottom;
currentY += 16;
@ -523,7 +526,7 @@ void PreviewView::NotifyCommentsChanged(PreviewModel * sender)
commentY = currentY+5;
tempComment = new ui::Label(ui::Point(5, currentY+5), ui::Point(Size.X-((XRES/2) + 13), -1), comments[i].comment);
tempComment = new ui::Label(ui::Point(5, currentY+5), ui::Point(Size.X-((XRES/2) + 13), -1), comments->at(i)->comment);
tempComment->SetMultiline(true);
tempComment->Appearance.HorizontalAlign = ui::Appearance::AlignLeft;
tempComment->Appearance.VerticalAlign = ui::Appearance::AlignTop;

View File

@ -37,7 +37,6 @@ class PreviewView: public ui::Window {
ui::Label * viewsLabel;
ui::Textbox * saveIDTextbox;
ui::ScrollPanel * commentsPanel;
std::vector<SaveComment> comments;
std::vector<ui::Component*> commentComponents;
std::vector<ui::Component*> commentTextComponents;
int votesUp;