Index: Streams/BinaryOutStream.cpp
===================================================================
--- Streams/BinaryOutStream.cpp	(revision 17019)
+++ Streams/BinaryOutStream.cpp	(working copy)
@@ -31,7 +31,7 @@
 void CBinaryOutStreamBase::Flush() throw()
 {
     WriteThisStream();
-    current = data.get();
+    current = &data[0];
 }
 
 // write our data to the file
@@ -40,12 +40,12 @@
 
 const unsigned char* CBinaryOutStreamBase::GetStreamData()
 {
-    return data.get();
+    return &data[0];
 }
 
 size_t CBinaryOutStreamBase::GetStreamSize()
 {
-    size_t size = current - data.get();
+    size_t size = current - &data[0];
     if (size > (unsigned) (-1))
         throw CStreamException ("binary stream too large");
 
@@ -54,7 +54,7 @@
 
 void CBinaryOutStreamBase::ReleaseStreamData()
 {
-    data.reset();
+	data.clear();
     current = NULL;
     last = NULL;
 }
@@ -66,9 +66,9 @@
     : CHierachicalOutStreamBase (aBuffer, anID)
     , current (NULL)
     , last (NULL)
+	, data (CHUNK_SIZE)
 {
-    data.reset (new unsigned char[CHUNK_SIZE]);
-    current = data.get();
+    current = &data[0];
     last = current + CHUNK_SIZE;
 }
 
Index: Streams/BinaryOutStream.h
===================================================================
--- Streams/BinaryOutStream.h	(revision 17019)
+++ Streams/BinaryOutStream.h	(working copy)
@@ -47,7 +47,7 @@
 
 	// data to write (may be NULL)
 
-	std::auto_ptr<unsigned char> data;
+	std::vector<unsigned char> data;
 	unsigned char* current;
 	unsigned char* last;
 
Index: Streams/BufferedOutFile.cpp
===================================================================
--- Streams/BufferedOutFile.cpp	(revision 17019)
+++ Streams/BufferedOutFile.cpp	(working copy)
@@ -34,9 +34,9 @@
 	{
 	#ifdef WIN32
 		DWORD written = 0;
-		WriteFile (file, buffer.get(), used, &written, NULL);
+		WriteFile (file, &buffer[0], used, &written, NULL);
 	#else
-		stream.write (reinterpret_cast<const char*>(buffer.get()), used);
+		stream.write (reinterpret_cast<const char*>(&buffer[0]), used);
 	#endif
 		used = 0;
 	}
@@ -47,7 +47,7 @@
 #ifdef WIN32
 CBufferedOutFile::CBufferedOutFile (const std::wstring& fileName)
 	: file (INVALID_HANDLE_VALUE)
-	, buffer (new unsigned char [BUFFER_SIZE])
+	, buffer (BUFFER_SIZE)
 	, used (0)
 	, fileSize (0)
 {
@@ -64,7 +64,7 @@
 }
 #else
 CBufferedOutFile::CBufferedOutFile (const std::string& fileName)
-    : buffer (new unsigned char [BUFFER_SIZE])
+    : buffer (BUFFER_SIZE)
     , used (0)
     , fileSize (0)
 {
@@ -115,7 +115,7 @@
 
 	// buffer small chunks of data
 
-	memcpy (buffer.get() + used, data, bytes);
+	memcpy (&buffer[0] + used, data, bytes);
 
 	used += bytes;
 	fileSize += bytes;
Index: Streams/BufferedOutFile.h
===================================================================
--- Streams/BufferedOutFile.h	(revision 17019)
+++ Streams/BufferedOutFile.h	(working copy)
@@ -45,7 +45,7 @@
 
 	enum {BUFFER_SIZE = 1024*1024};
 
-	std::auto_ptr<unsigned char> buffer;
+	std::vector<unsigned char> buffer;
 	unsigned used;
 
 	// physical file size + used
