From e00b92c3c688406b530f5dd1eab78ecb8d026957 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petri=20H=C3=A4kkinen?= Date: Wed, 17 Nov 2021 09:51:03 +0200 Subject: [PATCH] Fix luaV_doarith not setting tag for vectors. --- VM/src/lvmutils.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/VM/src/lvmutils.cpp b/VM/src/lvmutils.cpp index 6e2bbb6d..2d0bd2d1 100644 --- a/VM/src/lvmutils.cpp +++ b/VM/src/lvmutils.cpp @@ -398,6 +398,8 @@ void luaV_doarith(lua_State* L, StkId ra, const TValue* rb, const TValue* rc, TM if (vb && vc) { + setttype(ra, LUA_TVECTOR); + switch (op) { case TM_ADD: @@ -423,8 +425,6 @@ void luaV_doarith(lua_State* L, StkId ra, const TValue* rb, const TValue* rc, TM default: break; } - - setttype(ra, LUA_TVECTOR); } else if (vb) { @@ -433,6 +433,8 @@ void luaV_doarith(lua_State* L, StkId ra, const TValue* rb, const TValue* rc, TM if (c) { float nc = cast_to(float, nvalue(c)); + setttype(ra, LUA_TVECTOR); + switch (op) { case TM_MUL: @@ -446,7 +448,6 @@ void luaV_doarith(lua_State* L, StkId ra, const TValue* rb, const TValue* rc, TM default: break; } - setttype(ra, LUA_TVECTOR); } } else if (vc) @@ -456,6 +457,8 @@ void luaV_doarith(lua_State* L, StkId ra, const TValue* rb, const TValue* rc, TM if (b) { float nb = cast_to(float, nvalue(b)); + setttype(ra, LUA_TVECTOR); + switch (op) { case TM_MUL: @@ -469,7 +472,6 @@ void luaV_doarith(lua_State* L, StkId ra, const TValue* rb, const TValue* rc, TM default: break; } - setttype(ra, LUA_TVECTOR); } }