Index: trunk/src/lua/lua_glm.cc
===================================================================
--- trunk/src/lua/lua_glm.cc	(revision 378)
+++ trunk/src/lua/lua_glm.cc	(revision 380)
@@ -295,8 +295,8 @@
 	switch ( v.length() )
 	{
-	case 1: lua_pushfstring( L, ( fl ? "(%f)"          : "(%d)" ),          v[0] );
-	case 2: lua_pushfstring( L, ( fl ? "(%f,%f)"       : "(%d,%d)" ),       v[0], v[1] );
-	case 3: lua_pushfstring( L, ( fl ? "(%f,%f,%f)"    : "(%d,%d,%d)" ),    v[0], v[1], v[2] );
-	case 4: lua_pushfstring( L, ( fl ? "(%f,%f,%f,%f)" : "(%d,%d,%d,%d)" ), v[0], v[1], v[2], v[3] );
+	case 1: lua_pushfstring( L, ( fl ? "(%f)"          : "(%d)" ),          v[0] ); break;
+	case 2: lua_pushfstring( L, ( fl ? "(%f,%f)"       : "(%d,%d)" ),       v[0], v[1] ); break;
+	case 3: lua_pushfstring( L, ( fl ? "(%f,%f,%f)"    : "(%d,%d,%d)" ),    v[0], v[1], v[2] ); break;
+	case 4: lua_pushfstring( L, ( fl ? "(%f,%f,%f,%f)" : "(%d,%d,%d,%d)" ), v[0], v[1], v[2], v[3] ); break;
 	default:
 		lua_pushliteral( L, "(vector?)" ); break;
Index: trunk/src/lua/lua_path.cc
===================================================================
--- trunk/src/lua/lua_path.cc	(revision 378)
+++ trunk/src/lua/lua_path.cc	(revision 380)
@@ -32,5 +32,5 @@
 }
 
-void lua::path::push( nv::size_t value )
+void lua::path::push( nv::uint32 value )
 {
 	m_elements[ m_count ].value  = value;
@@ -50,5 +50,5 @@
 	if (m_count == 0) return false;
 	if (global) lua_pushglobaltable( L );
-	for (int i = 0; i < m_count; ++i )
+	for ( uint32 i = 0; i < m_count; ++i )
 	{
 		if ( lua_istable( L, -1 ) )
@@ -76,21 +76,35 @@
 std::string nv::lua::path::to_string() const
 {
-	std::string result;
-	result.reserve( 64 );
+	char buffer[64];
+	char* start   = buffer;
+	char* current = buffer;
 	bool dot = false;
+	bool oos = false;
 	for ( const element& e : m_elements )
 	{
-		if ( dot ) result.append(".");
+		if ( current - start > 48 ) { oos = true; break; }
+		if ( dot ) *current++ = '.';
 		if ( e.length == 0 )
 		{
-			result.append("[" + nv::to_string( e.value ) + "]" );
+			*current++ = '[';
+			current += uint32_to_buffer( e.value, current );
+			*current++ = ']';
 			dot = false;
 		}
 		else
 		{
-			result.append( e.str, e.length );
+			if ( size_t(current - start) + e.length > 60 ) { oos = true; break; }
+			nvmemcpy( current, e.str, e.length );
+			current += e.length;
 			dot = true;
 		}
 	}
-	return result;
+	if (oos) 
+	{ 
+		*current++ = '.';
+		*current++ = '.';
+		*current++ = '.';
+	}
+	*current++ = '\0';
+	return std::string( buffer, size_t(current - start - 1) );
 }
Index: trunk/src/lua/lua_raw.cc
===================================================================
--- trunk/src/lua/lua_raw.cc	(revision 378)
+++ trunk/src/lua/lua_raw.cc	(revision 380)
@@ -11,18 +11,31 @@
 std::string nlua_typecontent( lua_State* L, int idx )
 {
-	switch ( lua_type( L, idx ) )
+	int type = lua_type( L, idx );
+	switch ( type )
 	{
 	case LUA_TNONE          : return "NONE"; 
 	case LUA_TNIL		    : return "NIL"; 
 	case LUA_TBOOLEAN		: return lua_toboolean( L, idx ) == 0 ? "false" : "true"; 
-	case LUA_TLIGHTUSERDATA	: return nv::to_string( nv::uint64( lua_touserdata( L, idx ) ) ); 
-	case LUA_TNUMBER		: return nv::to_string( lua_tonumber( L, idx ) ); 
+	//case LUA_TLIGHTUSERDATA	: return std::to_string( nv::uint64( lua_touserdata( L, idx ) ) ); 
+	//case LUA_TNUMBER		: return std::to_string( lua_tonumber( L, idx ) ); 
 	case LUA_TSTRING		: return lua_tostring( L, idx ); 
 	case LUA_TTABLE		    : return "TABLE"; 
 	case LUA_TFUNCTION		: return "FUNCTION"; 
-	case LUA_TUSERDATA		: return nv::to_string( nv::uint64( lua_touserdata( L, idx ) ) ); 
+//	case LUA_TUSERDATA		: return std::to_string( nv::uint64( lua_touserdata( L, idx ) ) ); 
 	case LUA_TTHREAD		: return "THREAD"; 
-	default : return "UNKNOWN!"; 
-	}
+	default : break; 
+	}
+	char buffer[64];
+	if ( type == LUA_TLIGHTUSERDATA || type == LUA_TUSERDATA )
+	{
+		size_t l = nv::uint64_to_buffer( nv::uint64( lua_touserdata( L, idx ) ), buffer );
+		return std::string( buffer, l );
+	}
+	else if ( type == LUA_TNUMBER )
+	{
+		size_t l = nv::f64_to_buffer( lua_tonumber( L, idx ), buffer );
+		return std::string( buffer, l );
+	}
+	return "UNKNOWN!";
 }
 
Index: trunk/src/lua/lua_state.cc
===================================================================
--- trunk/src/lua/lua_state.cc	(revision 378)
+++ trunk/src/lua/lua_state.cc	(revision 380)
@@ -179,5 +179,5 @@
 }
 
-string lua::table_guard::get_std_string( string_ref element, string_ref defval /*= string_ref() */ )
+std::string lua::table_guard::get_std_string( string_ref element, string_ref defval /*= string_ref() */ )
 {
 	lua_getfield( m_state, -1, element.data() );
