Index: trunk/src/lua/lua_math.cc
===================================================================
--- trunk/src/lua/lua_math.cc	(revision 511)
+++ trunk/src/lua/lua_math.cc	(revision 512)
@@ -154,11 +154,13 @@
 int nlua_vec_add( lua_State* L )
 {
+	T v;
 	if ( lua_type( L, 1 ) == LUA_TNUMBER )
-		push_vec<T>( L, static_cast<typename T::value_type>(lua_tonumber( L, 1 )) + to_vec<T>( L, 2 ) );
+		v = static_cast<typename T::value_type>(lua_tonumber( L, 1 )) + to_vec<T>( L, 2 );
 	else
 		if ( lua_type( L, 2 ) == LUA_TNUMBER )
-			push_vec<T>( L, to_vec<T>( L, 1 ) + static_cast<typename T::value_type>(lua_tonumber( L, 2 )) );
-		else
-			push_vec<T>( L, to_vec<T>( L, 1 ) + to_vec<T>( L, 2 ) );
+			v = to_vec<T>( L, 1 ) + static_cast<typename T::value_type>( lua_tonumber( L, 2 ) );
+		else
+			v = to_vec<T>( L, 1 ) + to_vec<T>( L, 2 );
+	push_vec<T>( L, v );
 	return 1;
 }
@@ -167,11 +169,13 @@
 int nlua_vec_sub( lua_State* L )
 {
+	T v;
 	if ( lua_type( L, 1 ) == LUA_TNUMBER )
-		push_vec<T>( L, static_cast<typename T::value_type>(lua_tonumber( L, 1 )) - to_vec<T>( L, 2 ) );
+		v = static_cast<typename T::value_type>(lua_tonumber( L, 1 )) - to_vec<T>( L, 2 );
 	else
 		if ( lua_type( L, 2 ) == LUA_TNUMBER )
-			push_vec<T>( L, to_vec<T>( L, 1 ) - static_cast<typename T::value_type>(lua_tonumber( L, 2 )) );
-		else
-			push_vec<T>( L, to_vec<T>( L, 1 ) - to_vec<T>( L, 2 ) );
+			v = to_vec<T>( L, 1 ) - static_cast<typename T::value_type>(lua_tonumber( L, 2 ) );
+		else
+			v = to_vec<T>( L, 1 ) - to_vec<T>( L, 2 );
+	push_vec<T>( L, v );
 	return 1;
 }
@@ -180,11 +184,13 @@
 int nlua_vec_mul( lua_State* L )
 {
+	T v;
 	if ( lua_type( L, 1 ) == LUA_TNUMBER )
-		push_vec<T>( L, static_cast<typename T::value_type>(lua_tonumber( L, 1 )) * to_vec<T>( L, 2 ) );
+		v = static_cast<typename T::value_type>(lua_tonumber( L, 1 )) * to_vec<T>( L, 2 );
 	else
 		if ( lua_type( L, 2 ) == LUA_TNUMBER )
-			push_vec<T>( L, to_vec<T>( L, 1 ) * static_cast<typename T::value_type>(lua_tonumber( L, 2 )) );
-		else
-			push_vec<T>( L, to_vec<T>( L, 1 ) * to_vec<T>( L, 2 ) );
+			v = to_vec<T>( L, 1 ) * static_cast<typename T::value_type>(lua_tonumber( L, 2 ));
+		else
+			v = to_vec<T>( L, 1 ) * to_vec<T>( L, 2 );
+	push_vec<T>( L, v );
 	return 1;
 }
@@ -193,11 +199,13 @@
 int nlua_vec_div( lua_State* L )
 {
+	T v;
 	if ( lua_type( L, 1 ) == LUA_TNUMBER )
-		push_vec<T>( L, static_cast<typename T::value_type>(lua_tonumber( L, 1 )) / to_vec<T>( L, 2 ) );
+		v = static_cast<typename T::value_type>(lua_tonumber( L, 1 )) / to_vec<T>( L, 2 );
 	else
 		if ( lua_type( L, 2 ) == LUA_TNUMBER )
-			push_vec<T>( L, to_vec<T>( L, 1 ) / static_cast<typename T::value_type>(lua_tonumber( L, 2 )) );
-		else
-			push_vec<T>( L, to_vec<T>( L, 1 ) / to_vec<T>( L, 2 ) );
+			v = to_vec<T>( L, 1 ) / static_cast<typename T::value_type>(lua_tonumber( L, 2 ));
+		else
+			v = to_vec<T>( L, 1 ) / to_vec<T>( L, 2 );
+	push_vec<T>( L, v );
 	return 1;
 }
