--- vtkSelectPolyData.cxx	Wed Mar  9 15:39:14 2011
+++ vtkSelectPolyData.cxx	Wed Mar  9 15:47:37 2011
@@ -163,7 +163,7 @@
   if ( numPolys < 1 )
     {
     vtkErrorMacro("This filter operates on surface primitives");
-    tf->Delete();
+    triMesh->UnRegister(this);
     return 1;
     }
 
@@ -252,6 +252,13 @@
       if ( closest < 0 )
         {
         vtkErrorMacro(<<"Can't follow edge");
+
+        triMesh->UnRegister(this);
+        this->Mesh->Delete();
+        neighbors->Delete();
+        edgeIds->Delete();
+        loopIds->Delete();
+
         return 1;
         }
       else
