Index: trunk/src/lua/lua_state.cc
===================================================================
--- trunk/src/lua/lua_state.cc	(revision 471)
+++ trunk/src/lua/lua_state.cc	(revision 486)
@@ -194,4 +194,5 @@
 		str = lua_tolstring( m_state, -1, &l );
 		result = hash_string< uint64 >( str, l );
+		//NV_LOG_DEBUG( str );
 	}
 	lua_pop( m_state, 1 );
@@ -204,12 +205,28 @@
 	size_t l = 0;
 	const char* str = nullptr;
-	uint64 result = defval;
+	shash64 result = shash64( defval );
 	if ( lua_type( m_state, -1 ) == LUA_TSTRING )
 	{
 		str = lua_tolstring( m_state, -1, &l );
-		result = table.insert( string_view( str, l ) ).value();
-	}
-	lua_pop( m_state, 1 );
-	return shash64( result );
+		result = table.insert( string_view( str, l ) );
+	}
+	lua_pop( m_state, 1 );
+	return result;
+}
+
+nv::shash64 nv::lua::table_guard::get_string( string_view element, string_table* table, uint64 defval /*= 0 */ )
+{
+	lua_getfield( m_state, -1, element.data() );
+	size_t l = 0;
+	const char* str = nullptr;
+	shash64 result = shash64( defval );
+	if ( lua_type( m_state, -1 ) == LUA_TSTRING )
+	{
+		str = lua_tolstring( m_state, -1, &l );
+		string_view sv( str, l );
+		result = table ? table->insert( sv ) : shash64( sv );
+	}
+	lua_pop( m_state, 1 );
+	return result;
 }
 
