diff --git a/clang/lib/Analysis/BasicStore.cpp b/clang/lib/Analysis/BasicStore.cpp
index 35c6652..2e619ba 100644
--- a/clang/lib/Analysis/BasicStore.cpp
+++ b/clang/lib/Analysis/BasicStore.cpp
@@ -47,8 +47,8 @@
   
   ~BasicStoreManager() {}
 
-  std::auto_ptr<SubRegionMap> getSubRegionMap(const GRState *state) {
-    return std::auto_ptr<SubRegionMap>(new BasicStoreSubRegionMap());
+  SubRegionMap* getSubRegionMap(const GRState *state) {
+    return new BasicStoreSubRegionMap();
   }
 
   SVal Retrieve(const GRState *state, Loc loc, QualType T = QualType());  
diff --git a/clang/lib/Analysis/GRState.cpp b/clang/lib/Analysis/GRState.cpp
index 28e8190..eb6b1b5 100644
--- a/clang/lib/Analysis/GRState.cpp
+++ b/clang/lib/Analysis/GRState.cpp
@@ -278,7 +278,7 @@
   
   // Now look at the subregions.
   if (!SRM.get())
-   SRM.reset(state.getManager().getStoreManager().getSubRegionMap(state).get());
+   SRM.reset(state.getManager().getStoreManager().getSubRegionMap(state));
   
   return SRM->iterSubRegions(R, *this);
 }
diff --git a/clang/lib/Analysis/RegionStore.cpp b/clang/lib/Analysis/RegionStore.cpp
index 6238ff2..f3d1f0a 100644
--- a/clang/lib/Analysis/RegionStore.cpp
+++ b/clang/lib/Analysis/RegionStore.cpp
@@ -161,7 +161,7 @@
 
   MemRegionManager& getRegionManager() { return MRMgr; }
   
-  std::auto_ptr<SubRegionMap> getSubRegionMap(const GRState *state);
+  SubRegionMap* getSubRegionMap(const GRState *state);
   
   const GRState* BindCompoundLiteral(const GRState* St, 
                                      const CompoundLiteralExpr* CL, SVal V);
@@ -303,8 +303,7 @@
   return new RegionStoreManager(StMgr);
 }
 
-std::auto_ptr<SubRegionMap>
-RegionStoreManager::getSubRegionMap(const GRState *state) {
+SubRegionMap* RegionStoreManager::getSubRegionMap(const GRState *state) {
   RegionBindingsTy B = GetRegionBindings(state->getStore());
   RegionStoreSubRegionMap *M = new RegionStoreSubRegionMap();
   
@@ -313,7 +312,7 @@
       M->add(R->getSuperRegion(), R);
   }
   
-  return std::auto_ptr<SubRegionMap>(M);
+  return M;
 }
 
 /// getLValueString - Returns an SVal representing the lvalue of a
