Index: trunk/src/core/library.cc
===================================================================
--- trunk/src/core/library.cc	(revision 433)
+++ trunk/src/core/library.cc	(revision 437)
@@ -6,4 +6,5 @@
 
 #include "nv/core/library.hh"
+#include <string>
 
 #if NV_PLATFORM == NV_WINDOWS
@@ -40,5 +41,5 @@
 void library::open( string_view name )
 {
-	m_name.assign( name.data(), name.size() );
+	m_name = name;
 	if ( !open() )
 	{
@@ -51,5 +52,5 @@
 bool nv::library::try_open( string_view name )
 {
-	m_name.assign( name.data(), name.size() );
+	m_name = name;
 	if ( !open() )
 	{
@@ -62,5 +63,5 @@
 string_view library::get_name() const
 {
-    return string_view( m_name.c_str(), m_name.size() );
+    return m_name;
 }
 
@@ -71,7 +72,7 @@
         return true;
     }
-    NV_LOG_NOTICE( "library \"", string_view( m_name.c_str(), m_name.size() ), "\" : loading..." );
+    NV_LOG_NOTICE( "library \"", m_name, "\" : loading..." );
 
-	std::string name = m_name;
+	std::string name( m_name.data(), m_name.length() );
 	std::string ext( NV_LIB_EXT );
 
@@ -85,8 +86,7 @@
     if ( m_handle == NULL )
     {
-		NV_LOG_NOTICE( "library \"", string_view( m_name.c_str(), m_name.size() ), "\" : failed to open!" );
+		NV_LOG_NOTICE( "library \"", m_name, "\" : failed to open!" );
 		return false;
     }
-    NV_LOG_NOTICE( "library \"", string_view( m_name.c_str(), m_name.size() ), "\" : loaded." );
 	return true;
 }
@@ -97,5 +97,5 @@
     if ( !result )
     {
-		NV_LOG_CRITICAL( "library \"", string_view( m_name.c_str(), m_name.size() ), "\" : can't find symbol \"", symbol, "\"" );
+		NV_LOG_CRITICAL( "library \"", m_name, "\" : can't find symbol \"", symbol, "\"" );
 		NV_ABORT( "Library symbol load failed!" );
     }
@@ -117,5 +117,5 @@
     if ( ! NV_LIB_CLOSE( m_handle ) )
     {
-        NV_LOG_ERROR( "library \"", string_view( m_name.c_str(), m_name.size() ), "\" : can't close library!" );
+        NV_LOG_ERROR( "library \"", m_name, "\" : can't close library!" );
     }
     m_handle = nullptr;
@@ -130,18 +130,16 @@
 }
 
-std::string library::get_error()
+nv::string_view library::get_error()
 {
 #if NV_PLATFORM == NV_WINDOWS
     // We do hate WinAPI for code like this, don't we?
-    LPTSTR buffer = nullptr;
-    FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
-        NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast<LPTSTR>( &buffer ), 0, NULL );
-    std::string msg( reinterpret_cast<char*>( buffer ) );
-    LocalFree( buffer );
-    return msg;
+	static TCHAR buffer[256];
+    FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+        NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast<LPTSTR>( &buffer ), 256, NULL );
+    return string_view( reinterpret_cast<char*>( buffer ) );
 #elif NV_PLATFORM == NV_LINUX || NV_PLATFORM == NV_APPLE
-    return std::string( dlerror() );
+    return nv::string_view( dlerror() );
 #else
-    return std::string("");
+    return nv::string_view();
 #endif
 }
