gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r12298: Memory fixes.


From: Benjamin Wolsey
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r12298: Memory fixes.
Date: Mon, 12 Jul 2010 12:16:02 +0200
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 12298 [merge]
committer: Benjamin Wolsey <address@hidden>
branch nick: trunk
timestamp: Mon 2010-07-12 12:16:02 +0200
message:
  Memory fixes.
modified:
  libbase/SharedMem.cpp
  libcore/movie_root.cpp
=== modified file 'libbase/SharedMem.cpp'
--- a/libbase/SharedMem.cpp     2010-05-18 07:51:05 +0000
+++ b/libbase/SharedMem.cpp     2010-07-12 08:43:18 +0000
@@ -73,6 +73,8 @@
 
 SharedMem::~SharedMem()
 {
+    // Nothing to do if we were never attached.
+    if (!_addr) return;
 #ifndef _WIN32
     if (::shmdt(_addr) < 0) {
         const int err = errno;

=== modified file 'libcore/movie_root.cpp'
--- a/libcore/movie_root.cpp    2010-07-12 07:59:56 +0000
+++ b/libcore/movie_root.cpp    2010-07-12 10:05:25 +0000
@@ -109,12 +109,17 @@
 // Utility classes
 namespace {
 
-class FindTarget
+/// Identify and delete ExecutableCode that matches a particular target.
+class RemoveTargetCode
 {
 public:
-    FindTarget(DisplayObject* target) : _target(target) {}
+    RemoveTargetCode(DisplayObject* target) : _target(target) {}
     bool operator()(ExecutableCode* c) const {
-        return _target == c->target();
+        if (_target == c->target()) {
+            delete c;
+            return true;
+        }
+        return false;
     }
 private:
     DisplayObject* _target;
@@ -1462,7 +1467,7 @@
 {
     ActionQueue& pr = _actionQueue[PRIORITY_CONSTRUCT];
     
-    pr.erase(std::remove_if(pr.begin(), pr.end(), FindTarget(target)),
+    pr.erase(std::remove_if(pr.begin(), pr.end(), RemoveTargetCode(target)),
             pr.end());
 }
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]