Index: lemon/matching.h
===================================================================
--- lemon/matching.h	(revision 945)
+++ lemon/matching.h	(revision 698)
@@ -806,16 +806,11 @@
         _matching = new MatchingMap(_graph);
       }
-
       if (!_node_potential) {
         _node_potential = new NodePotential(_graph);
       }
-
       if (!_blossom_set) {
         _blossom_index = new IntNodeMap(_graph);
         _blossom_set = new BlossomSet(*_blossom_index);
         _blossom_data = new RangeMap<BlossomData>(_blossom_num);
-      } else if (_blossom_data->size() != _blossom_num) {
-        delete _blossom_data;
-        _blossom_data = new RangeMap<BlossomData>(_blossom_num);
       }
 
@@ -824,9 +819,5 @@
         _node_heap_index = new IntArcMap(_graph);
         _node_data = new RangeMap<NodeData>(_node_num,
-                                            NodeData(*_node_heap_index));
-      } else {
-        delete _node_data;
-        _node_data = new RangeMap<NodeData>(_node_num,
-                                            NodeData(*_node_heap_index));
+                                              NodeData(*_node_heap_index));
       }
 
@@ -834,30 +825,20 @@
         _tree_set_index = new IntIntMap(_blossom_num);
         _tree_set = new TreeSet(*_tree_set_index);
-      } else {
-        _tree_set_index->resize(_blossom_num);
-      }
-
+      }
       if (!_delta1) {
         _delta1_index = new IntNodeMap(_graph);
         _delta1 = new BinHeap<Value, IntNodeMap>(*_delta1_index);
       }
-
       if (!_delta2) {
         _delta2_index = new IntIntMap(_blossom_num);
         _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index);
-      } else {
-        _delta2_index->resize(_blossom_num);
-      }
-
+      }
       if (!_delta3) {
         _delta3_index = new IntEdgeMap(_graph);
         _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index);
       }
-
       if (!_delta4) {
         _delta4_index = new IntIntMap(_blossom_num);
         _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index);
-      } else {
-        _delta4_index->resize(_blossom_num);
       }
     }
@@ -1705,7 +1686,4 @@
       createStructures();
 
-      _blossom_node_list.clear();
-      _blossom_potential.clear();
-
       for (ArcIt e(_graph); e != INVALID; ++e) {
         (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP;
@@ -1721,11 +1699,4 @@
         (*_delta4_index)[i] = _delta4->PRE_HEAP;
       }
-      
-      _delta1->clear();
-      _delta2->clear();
-      _delta3->clear();
-      _delta4->clear();
-      _blossom_set->clear();
-      _tree_set->clear();
 
       int index = 0;
@@ -1739,6 +1710,4 @@
         }
         (*_node_index)[n] = index;
-        (*_node_data)[index].heap_index.clear();
-        (*_node_data)[index].heap.clear();
         (*_node_data)[index].pot = max;
         _delta1->push(n, max);
@@ -2230,15 +2199,10 @@
         _matching = new MatchingMap(_graph);
       }
-
       if (!_node_potential) {
         _node_potential = new NodePotential(_graph);
       }
-
       if (!_blossom_set) {
         _blossom_index = new IntNodeMap(_graph);
         _blossom_set = new BlossomSet(*_blossom_index);
-        _blossom_data = new RangeMap<BlossomData>(_blossom_num);
-      } else if (_blossom_data->size() != _blossom_num) {
-        delete _blossom_data;
         _blossom_data = new RangeMap<BlossomData>(_blossom_num);
       }
@@ -2249,8 +2213,4 @@
         _node_data = new RangeMap<NodeData>(_node_num,
                                             NodeData(*_node_heap_index));
-      } else if (_node_data->size() != _node_num) {
-        delete _node_data;
-        _node_data = new RangeMap<NodeData>(_node_num,
-                                            NodeData(*_node_heap_index));
       }
 
@@ -2258,25 +2218,16 @@
         _tree_set_index = new IntIntMap(_blossom_num);
         _tree_set = new TreeSet(*_tree_set_index);
-      } else {
-        _tree_set_index->resize(_blossom_num);
-      }
-
+      }
       if (!_delta2) {
         _delta2_index = new IntIntMap(_blossom_num);
         _delta2 = new BinHeap<Value, IntIntMap>(*_delta2_index);
-      } else {
-        _delta2_index->resize(_blossom_num);
-      }
-
+      }
       if (!_delta3) {
         _delta3_index = new IntEdgeMap(_graph);
         _delta3 = new BinHeap<Value, IntEdgeMap>(*_delta3_index);
       }
-
       if (!_delta4) {
         _delta4_index = new IntIntMap(_blossom_num);
         _delta4 = new BinHeap<Value, IntIntMap>(*_delta4_index);
-      } else {
-        _delta4_index->resize(_blossom_num);
       }
     }
@@ -2976,7 +2927,4 @@
       createStructures();
 
-      _blossom_node_list.clear();
-      _blossom_potential.clear();
-
       for (ArcIt e(_graph); e != INVALID; ++e) {
         (*_node_heap_index)[e] = BinHeap<Value, IntArcMap>::PRE_HEAP;
@@ -2989,10 +2937,4 @@
         (*_delta4_index)[i] = _delta4->PRE_HEAP;
       }
-
-      _delta2->clear();
-      _delta3->clear();
-      _delta4->clear();
-      _blossom_set->clear();
-      _tree_set->clear();
 
       int index = 0;
@@ -3006,6 +2948,4 @@
         }
         (*_node_index)[n] = index;
-        (*_node_data)[index].heap_index.clear();
-        (*_node_data)[index].heap.clear();
         (*_node_data)[index].pot = max;
         int blossom =
