Index: trunk/src/gfx/mesh_creator.cc
===================================================================
--- trunk/src/gfx/mesh_creator.cc	(revision 457)
+++ trunk/src/gfx/mesh_creator.cc	(revision 458)
@@ -215,4 +215,5 @@
 	raw_data_channel g_channel  = data_channel_creator::create< vertex_g >( m_pos_channel->size() );
 	vec4* tangents              = &( data_channel_access< vertex_g >( &g_channel ).data()[0].tangent );
+	fill_n( tangents, m_pos_channel->size(), vec4() );
 	vec3* tangents2             = new vec3[ m_pos_channel->size() ];
 	uint32 tri_count = m_idx_channel ? m_idx_channel->size() / 3 : m_tex_channel->size() / 3;
@@ -246,7 +247,7 @@
 		}
 
-		const vec2& w1 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti0 + m_tex_offset );
-		const vec2& w2 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti1 + m_tex_offset );
-		const vec2& w3 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti2 + m_tex_offset );
+		vec2 w1 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti0 + m_tex_offset );
+		vec2 w2 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti1 + m_tex_offset );
+		vec2 w3 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti2 + m_tex_offset );
 		vec2 st1 = w3 - w1;
 		vec2 st2 = w2 - w1;
Index: trunk/src/gfx/skeletal_mesh.cc
===================================================================
--- trunk/src/gfx/skeletal_mesh.cc	(revision 457)
+++ trunk/src/gfx/skeletal_mesh.cc	(revision 458)
@@ -235,8 +235,11 @@
 
 nv::skeletal_mesh_gpu::skeletal_mesh_gpu( context* a_context, const data_channel_set* a_mesh, const mesh_nodes_data* a_bone_data )
-	: skeletal_mesh( a_context ), m_bone_data( a_bone_data ), m_transform( nullptr )
-{
-	m_va          = a_context->create_vertex_array( a_mesh, nv::STATIC_DRAW );
-	m_index_count = a_mesh->get_channel_size( slot::INDEX );
+	: skeletal_mesh( a_context ), m_bone_data( a_bone_data ), m_index_count( 0 ), m_transform( nullptr )
+{
+	if ( a_mesh )
+	{
+		m_va = a_context->create_vertex_array( a_mesh, nv::STATIC_DRAW );
+		m_index_count = a_mesh->get_channel_size( slot::INDEX );
+	}
 	if ( m_bone_data )
 	{
@@ -264,4 +267,5 @@
 {
 	if ( node_id == 0 ) return transform();
+	if ( node_id == uint32(-1) ) return transform( m_transform[0] );
 	return transform( m_transform[ node_id ] );
 }
