Index: trunk/src/core/library.cc
===================================================================
--- trunk/src/core/library.cc	(revision 376)
+++ trunk/src/core/library.cc	(revision 380)
@@ -39,17 +39,17 @@
 }
 
-void library::open( const string& name )
+void library::open( string_ref name )
 {
-	m_name = name;
+	m_name.assign( name.data(), name.size() );
 	if ( !open() )
 	{
 		m_handle = nullptr;
-		NV_THROW( library_error, "Can't load library!", name );
+		NV_THROW( library_error, "Can't load library!", name.data() );
 	}
 }
 
-bool nv::library::try_open( const string& name )
+bool nv::library::try_open( string_ref name )
 {
-	m_name = name;
+	m_name.assign( name.data(), name.size() );
 	if ( !open() )
 	{
@@ -60,7 +60,7 @@
 }
 
-const string& library::get_name() const
+string_ref library::get_name() const
 {
-    return m_name;
+    return string_ref( m_name );
 }
 
@@ -73,11 +73,10 @@
     NV_LOG_NOTICE( "library : loading '", m_name, "'..." );
 
-    string name = m_name;
-    string ext  = NV_LIB_EXT;
-    size_t ext_len   = ext.length();
+	std::string name = m_name;
+	string_ref ext( NV_LIB_EXT );
 
-    if ( name.length() < ext_len || name.substr( name.length() - ext_len, ext_len ) != ext ) 
+	if ( name.length() < ext.length() || name.substr( name.length() - ext.length(), ext.length() ) != ext )
     {
-        name += ext;
+        name.append( ext.data(), ext.length() );
     }
 
@@ -93,17 +92,17 @@
 }
 
-void* library::get( const string& symbol )
+void* library::get( string_ref symbol )
 {
-	void* result = (void*) NV_LIB_GET( (NV_LIB_HANDLE) m_handle, symbol.c_str() );
+	void* result = (void*) NV_LIB_GET( (NV_LIB_HANDLE) m_handle, symbol.data() );
     if ( !result )
     {
-        NV_THROW( library_error, "Can't find symbol " + symbol + "!", m_name );
+        NV_THROW( library_error, "Can't find symbol " + std::string(symbol.data(),symbol.size()) + "!", m_name );
     }
 	return result;
 }
 
-void* nv::library::try_get( const string& symbol )
+void* nv::library::try_get( string_ref symbol )
 {
-	return (void*) NV_LIB_GET( (NV_LIB_HANDLE) m_handle, symbol.c_str() );
+	return (void*) NV_LIB_GET( (NV_LIB_HANDLE) m_handle, symbol.data() );
 }
 
@@ -130,5 +129,5 @@
 }
 
-string library::get_error()
+std::string library::get_error()
 {
 #if NV_PLATFORM == NV_WINDOWS
@@ -137,5 +136,5 @@
     FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
         NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &buffer, 0, NULL );
-    string msg( (char*)buffer );
+    std::string msg( (char*)buffer );
     LocalFree( buffer );
     return msg;
Index: trunk/src/core/logger.cc
===================================================================
--- trunk/src/core/logger.cc	(revision 376)
+++ trunk/src/core/logger.cc	(revision 380)
@@ -163,5 +163,5 @@
 	{
 		const char* lcolor = log_color[( level ) / 10];
-		fwrite( lcolor, strlen(lcolor), 1, stdout );
+		fwrite( lcolor, nvstrlen(lcolor), 1, stdout );
 	}
 	fwrite( NV_LOG_LEVEL_NAME_PAD( level ), 8, 1, stdout );
Index: trunk/src/core/profiler.cc
===================================================================
--- trunk/src/core/profiler.cc	(revision 376)
+++ trunk/src/core/profiler.cc	(revision 380)
@@ -108,5 +108,5 @@
 	char buffer[128];
 	snprintf( buffer, 128, "%-23s %6s %6s %9s %6s", "TAG", "%PARNT", "CALLS", "TOTAL(ms)", "AVG(ms)" );
-	NV_LOG_INFO( string_ref( buffer, strlen(buffer) ) );
+	NV_LOG_INFO( string_ref( buffer, nvstrlen( buffer ) ) );
  	log_node_children( 0, m_root );
 	NV_LOG_INFO( "-- PROFILER REPORT END ---------------------------------" );
@@ -122,12 +122,12 @@
 		if ( c->m_calls > 0 )
 		{
-			double pparent  = ( (double)c->m_total_time_us / (double)c->m_parent->m_total_time_us ) * 100.f;
-			int calls       = c->m_calls;
-			double total_ms = c->m_total_time_us / 1000.f;
-			double avg_ms   = ( (double)c->m_total_time_us / (double)c->m_calls ) / 1000.f;
-			if ( indent > 0 ) memset( buffer, '-', indent );
+			f64 pparent = ( (f64)c->m_total_time_us / (f64)c->m_parent->m_total_time_us ) * 100.f;
+			uint32 calls       = c->m_calls;
+			f64 total_ms = c->m_total_time_us / 1000.f;
+			f64 avg_ms = ( (f64)c->m_total_time_us / (f64)c->m_calls ) / 1000.f;
+			if ( indent > 0 ) nvmemset( buffer, '-', indent );
 			snprintf( buffer + indent, 128 - indent, "%*.*s %6.2f %6d %9.2f %6.2f", indent - 23, 23 - indent,
 				c->m_tag.c_str(), pparent, calls, total_ms, avg_ms );
-			NV_LOG_INFO( string_ref( buffer, strlen( buffer ) ) );
+			NV_LOG_INFO( string_ref( buffer, nvstrlen( buffer ) ) );
 			if ( c->m_children.size() > 0 )
 			{
Index: trunk/src/core/time.cc
===================================================================
--- trunk/src/core/time.cc	(revision 376)
+++ trunk/src/core/time.cc	(revision 380)
@@ -74,5 +74,5 @@
 	struct timespec ts;
 	ts.tv_sec = 0;
-	ts.tv_nsec = ms * 1000000;
+	ts.tv_nsec = (long)ms * 1000000;
 	nanosleep(&ts, NULL);
 //	usleep( ms * 1000 );
