Index: trunk/src/gl/gl_device.cc
===================================================================
--- trunk/src/gl/gl_device.cc	(revision 438)
+++ trunk/src/gl/gl_device.cc	(revision 439)
@@ -212,5 +212,5 @@
 		for ( auto& i : *info->m_uniform_map )
 		{
-			auto j = lmap.find( i.first.c_str() );
+			auto j = lmap.find( i.first );
 			if ( j != lmap.end() )
 			{
@@ -218,5 +218,5 @@
 			}			
 
-			auto k = map.find( i.first.c_str() );
+			auto k = map.find( i.first );
 			if ( k != map.end() )
 			{
@@ -227,5 +227,5 @@
 }
 
-uniform_base* nv::gl_device::get_uniform( program p, const std::string& name, bool fatal /*= true */ ) const
+uniform_base* nv::gl_device::get_uniform( program p, const string_view& name, bool fatal /*= true */ ) const
 {
 	const gl_program_info* info = m_programs.get( p );
@@ -238,5 +238,5 @@
 		if ( fatal )
 		{
-			NV_LOG_CRITICAL( "gl_device : uniform '", string_view( name.c_str(), name.size() ), "' not found in program!" );
+			NV_LOG_CRITICAL( "gl_device : uniform '", name, "' not found in program!" );
 			NV_ABORT( "gl_device : uniform not found!" );
 		}
@@ -245,5 +245,5 @@
 }
 
-int nv::gl_device::get_attribute_location( program p, const std::string& name, bool fatal /*= true */ ) const
+int nv::gl_device::get_attribute_location( program p, const string_view& name, bool fatal /*= true */ ) const
 {
 	const gl_program_info* info = m_programs.get( p );
@@ -257,5 +257,5 @@
 		if ( fatal )
 		{
-			NV_LOG_CRITICAL( "gl_device : attribute '", string_view( name.c_str(), name.size() ), "' not found in program!" );
+			NV_LOG_CRITICAL( "gl_device : attribute '", name, "' not found in program!" );
 			NV_ABORT( "gl_device : attribute not found!" );
 		}
@@ -357,13 +357,12 @@
 		glGetActiveAttrib( p->glid, i, 128, &attr_nlen, &attr_len, &attr_type, name_buffer );
 
-		std::string name( name_buffer, size_t( attr_nlen ) );
+		string_view name( name_buffer, size_t( attr_nlen ) );
 
 		// skip built-ins
 		if ( name.substr(0,3) == "gl_" ) continue;
 
-		int attr_loc = glGetAttribLocation( p->glid, name.c_str() );
+		int attr_loc = glGetAttribLocation( p->glid, name.data() );
 
 		attribute& attr = (*p->m_attribute_map)[ name ];
-		attr.name     = name;
 		attr.location = attr_loc;
 		attr.type     = gl_enum_to_datatype( attr_type );
@@ -386,20 +385,20 @@
 		glGetActiveUniform( p->glid, i, 128, &uni_nlen, &uni_len, &uni_type, name_buffer );
 
-		std::string name( name_buffer, size_t( uni_nlen ) );
+		string_view name( name_buffer, size_t( uni_nlen ) );
 
 		// skip built-ins
 		if ( name.substr(0,3) == "gl_" ) continue;
 
-		int uni_loc = glGetUniformLocation( p->glid, name.c_str() );
+		int uni_loc = glGetUniformLocation( p->glid, name.data() );
 		datatype utype = gl_enum_to_datatype( uni_type );
 
 		// check for array
-		std::string::size_type arrchar = name.find( '[' );
-		if ( arrchar != std::string::npos )
+		size_t arrchar = name.find( '[' );
+		if ( arrchar != string_view::npos )
 		{
 			name = name.substr( 0, arrchar );
 		}
 
-		uniform_base* u = uniform_base::create( utype, name, uni_loc, uni_len );
+		uniform_base* u = uniform_base::create( utype, uni_loc, uni_len );
 		NV_ASSERT( u, "Unknown uniform type!" );
 		(*p->m_uniform_map)[ name ] = u;
