Index: PathUtils.cpp
===================================================================
--- PathUtils.cpp	(revision 16987)
+++ PathUtils.cpp	(working copy)
@@ -369,12 +369,10 @@
 
 CStringA CPathUtils::PathUnescape(const CStringA& path)
 {
-	std::auto_ptr<char> urlabuf (new char[path.GetLength()+1]);
-
-	strcpy_s(urlabuf.get(), path.GetLength()+1, path);
-	Unescape(urlabuf.get());
-
-	return urlabuf.get();
+	std::vector<char> urlabuf (path.GetLength()+1);
+	strcpy_s(&urlabuf[0], urlabuf.size(), path);
+	Unescape(&urlabuf[0]);
+	return &urlabuf[0];
 }
 
 CStringW CPathUtils::PathUnescape(const CStringW& path)
Index: Registry.cpp
===================================================================
--- Registry.cpp	(revision 16987)
+++ Registry.cpp	(working copy)
@@ -72,11 +72,11 @@
 	DWORD type = 0;
 	RegQueryValueEx(hKey, m_key, NULL, &type, NULL, (LPDWORD) &size);
 
-    std::auto_ptr<char> buffer (new char[size]);
-    if ((LastError = RegQueryValueEx(hKey, m_key, NULL, &type, (BYTE*) buffer.get(), &size))==ERROR_SUCCESS)
+    std::vector<char> buffer (size);
+    if ((LastError = RegQueryValueEx(hKey, m_key, NULL, &type, (BYTE*) &buffer[0], &size))==ERROR_SUCCESS)
     {
     	ASSERT(type==REG_BINARY);
-		value = CRect((LPRECT)buffer.get());
+		value = CRect((LPRECT)&buffer[0]);
     }
 }
 
@@ -107,11 +107,11 @@
 	DWORD type = 0;
 	RegQueryValueEx(hKey, m_key, NULL, &type, NULL, (LPDWORD) &size);
 
-    std::auto_ptr<char> buffer(new char[size]);
-    if ((LastError = RegQueryValueEx(hKey, m_key, NULL, &type, (BYTE*) buffer.get(), &size))==ERROR_SUCCESS)
+    std::vector<char> buffer(size);
+    if ((LastError = RegQueryValueEx(hKey, m_key, NULL, &type, (BYTE*)&buffer[0], &size))==ERROR_SUCCESS)
     {
     	ASSERT(type==REG_BINARY);
-		value = CPoint(*(POINT*)buffer.get());
+		value = CPoint(*(POINT*)(&buffer[0]));
     }
 }
 
Index: registry.h
===================================================================
--- registry.h	(revision 16987)
+++ registry.h	(working copy)
@@ -650,11 +650,11 @@
 	DWORD type = 0;
 	LastError = RegQueryValueEx(hKey, GetPlainString (m_key), NULL, &type, NULL, &size);
 
-    std::auto_ptr<TCHAR> pStr (new TCHAR[size]);
-	if ((LastError = RegQueryValueEx(hKey, GetPlainString (m_key), NULL, &type, (BYTE*) pStr.get(), &size))==ERROR_SUCCESS)
+    std::vector<TCHAR> pStr(size);
+	if ((LastError = RegQueryValueEx(hKey, GetPlainString (m_key), NULL, &type, (BYTE*) &pStr[0], &size))==ERROR_SUCCESS)
     {
         ASSERT(type==REG_SZ || type==REG_EXPAND_SZ);
-        value = StringT (pStr.get());
+        value = StringT (&pStr[0]);
     }
 }
 
