Index: /trunk/nv/lua/lua_map_area.hh
===================================================================
--- /trunk/nv/lua/lua_map_area.hh	(revision 262)
+++ /trunk/nv/lua/lua_map_area.hh	(revision 263)
@@ -22,4 +22,5 @@
 		void register_map_area( lua_State* L );
 		void register_map_area_interface( lua_State* L, int index );
+		void register_map_area_instance( lua_State* L, int object_index, map_area* area );
 
 		namespace detail
Index: /trunk/src/lua/lua_map_area.cc
===================================================================
--- /trunk/src/lua/lua_map_area.cc	(revision 262)
+++ /trunk/src/lua/lua_map_area.cc	(revision 263)
@@ -54,18 +54,14 @@
 nv::map_area* nv::lua::detail::to_map_area( lua_State* L, int index )
 {
-	if ( lua_type( L, index ) == LUA_TTABLE )
-	{
-		nv::map_area* o = nullptr;
-		if ( lua_istable( L , index ) )
+	nv::map_area* o = nullptr;
+	if ( lua_istable( L , index ) )
+	{
+		lua_pushstring( L, "__map_area_ptr" );
+		lua_rawget( L, index );
+		if ( lua_isuserdata( L, -1 ) )
 		{
-			lua_pushstring( L, "__map_area_ptr" );
-			lua_rawget( L, index );
-			if ( lua_isuserdata( L, -1 ) )
-			{
-				o = static_cast<nv::map_area*>( lua_touserdata( L, -1 ) );
-			} 
-			lua_pop( L, 1 );
-		}
-		return o;
+			o = static_cast<nv::map_area*>( lua_touserdata( L, -1 ) );
+		} 
+		lua_pop( L, 1 );
 	}
 	else
@@ -73,4 +69,5 @@
 		return *(nv::map_area**)luaL_checkudata( L, index, NLUA_MAP_AREA_METATABLE );
 	}
+	return o;
 }
 
@@ -235,2 +232,11 @@
 	luaopen_map_area(L);
 }
+
+void nv::lua::register_map_area_instance( lua_State* L, int object_index, map_area* area )
+{
+	lua_rawgeti( L, LUA_REGISTRYINDEX, object_index );
+	lua_pushstring( L, "__map_area_ptr" );
+	lua_pushlightuserdata( L, (map_area*)area );
+	lua_rawset( L, -3 );
+	lua_pop( L, 1 );
+}
Index: /trunk/src/lua/lua_state.cc
===================================================================
--- /trunk/src/lua/lua_state.cc	(revision 262)
+++ /trunk/src/lua/lua_state.cc	(revision 263)
@@ -422,5 +422,4 @@
 {
 	if ( object_index == ref_nil ) return;
-	stack_guard guard( this );
 	lua_rawgeti( m_state, LUA_REGISTRYINDEX, object_index );
 	lua_pushstring( m_state, metaname.c_str() );
