summaryrefslogtreecommitdiff
path: root/src/client/requestbroker/ImageRequest.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2013-03-14 12:10:56 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2013-03-14 12:10:56 (GMT)
commit6b68c04cd613847e4f2bbe1f0cd8a2a13a9d4660 (patch)
tree73a6e42d5c6ac2e62e0812c8b83936506c05c659 /src/client/requestbroker/ImageRequest.cpp
parent9ab70756af4fb3f0f9c4e287f1b30e0897a19741 (diff)
downloadpowder-6b68c04cd613847e4f2bbe1f0cd8a2a13a9d4660.zip
powder-6b68c04cd613847e4f2bbe1f0cd8a2a13a9d4660.tar.gz
Fix multiple free after merging multiple request objects
Diffstat (limited to 'src/client/requestbroker/ImageRequest.cpp')
-rw-r--r--src/client/requestbroker/ImageRequest.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/client/requestbroker/ImageRequest.cpp b/src/client/requestbroker/ImageRequest.cpp
index 6e4f66c..778d8b6 100644
--- a/src/client/requestbroker/ImageRequest.cpp
+++ b/src/client/requestbroker/ImageRequest.cpp
@@ -115,11 +115,14 @@ RequestBroker::ProcessResponse ImageRequest::Process(RequestBroker & rb)
{
//Create a copy, to seperate from the cache
+ std::vector<Request *> children(Children.begin(), Children.end());
+ Children.clear();
+
VideoBuffer * myVB = new VideoBuffer(*image);
myVB->Resize(Width, Height, true);
ResultObject = (void*)myVB;
rb.requestComplete(this);
- for(std::vector<Request*>::iterator childIter = Children.begin(), childEnd = Children.end(); childIter != childEnd; ++childIter)
+ for(std::vector<Request*>::iterator childIter = children.begin(), childEnd = children.end(); childIter != childEnd; ++childIter)
{
if((*childIter)->Type == Request::Image)
{