Index: src/libchcore/TDataBuffer.cpp
===================================================================
diff -u -N -rfdf4929dc7df1376ed439b7271765f1a4ca31de6 -r409a0af1e9fdea72ca016118d76a5a95e53496e8
--- src/libchcore/TDataBuffer.cpp	(.../TDataBuffer.cpp)	(revision fdf4929dc7df1376ed439b7271765f1a4ca31de6)
+++ src/libchcore/TDataBuffer.cpp	(.../TDataBuffer.cpp)	(revision 409a0af1e9fdea72ca016118d76a5a95e53496e8)
@@ -25,13 +25,6 @@
 
 BEGIN_CHCORE_NAMESPACE
 
-namespace
-{
-	const size_t c_DefaultBufferSize = 65536;
-	const size_t c_DefaultPageSize = 1024*1024;
-	const size_t c_DefaultMaxMemory = 1024*1024;
-}
-
 namespace details
 {
 	TVirtualAllocMemoryBlock::TVirtualAllocMemoryBlock(size_t stSize, size_t stChunkSize) :
@@ -193,7 +186,7 @@
 
 void TSimpleDataBuffer::SetDataSize(size_t stDataSize)
 {
-	if(stDataSize > m_stBufferSize)
+	if(stDataSize != 0 && (stDataSize > m_stBufferSize || !m_pBuffer))
 		THROW_CORE_EXCEPTION(eErr_InvalidArgument);
 
 	m_stDataSize = stDataSize;
@@ -235,7 +228,7 @@
 	// first the user-facing buffer size
 	if(stBufferSize == 0)
 	{
-		stBufferSize = c_DefaultMaxMemory;
+		stBufferSize = DefaultMaxMemory;
 		bResult = false;
 	}
 	else
@@ -251,7 +244,7 @@
 	// now the page size
 	if(stPageSize == 0)
 	{
-		stPageSize = std::max(c_DefaultPageSize, RoundUp(c_DefaultPageSize, stBufferSize));
+		stPageSize = std::max(DefaultPageSize, RoundUp(DefaultPageSize, stBufferSize));
 		bResult = false;
 	}
 	else
@@ -266,7 +259,7 @@
 
 	if(stMaxMemory == 0)
 	{
-		stMaxMemory = std::max(c_DefaultMaxMemory, RoundUp(c_DefaultMaxMemory, stPageSize));
+		stMaxMemory = std::max(DefaultMaxMemory, RoundUp(DefaultMaxMemory, stPageSize));
 		bResult = false;
 	}
 	else if(stMaxMemory < stPageSize)
@@ -284,14 +277,14 @@
 
 bool TDataBufferManager::CheckBufferConfig(size_t& stMaxMemory)
 {
-	size_t stDefaultPageSize = c_DefaultPageSize;
-	size_t stDefaultBufferSize = c_DefaultBufferSize;
+	size_t stDefaultPageSize = DefaultPageSize;
+	size_t stDefaultBufferSize = DefaultBufferSize;
 	return CheckBufferConfig(stMaxMemory, stDefaultPageSize, stDefaultBufferSize);
 }
 
 void TDataBufferManager::Initialize(size_t stMaxMemory)
 {
-	Initialize(stMaxMemory, c_DefaultPageSize, c_DefaultBufferSize);
+	Initialize(stMaxMemory, DefaultPageSize, DefaultBufferSize);
 }
 
 void TDataBufferManager::Initialize(size_t stMaxMemory, size_t stPageSize, size_t stBufferSize)