From 58bd4012506e6dfc92dd819d4e43acad18e8b914 Mon Sep 17 00:00:00 2001
From: daurnimator <quae@daurnimator.com>
Date: Thu, 27 Apr 2017 17:58:58 +1000
Subject: lua_State shouldn't subclass TValue

---
 src/lapi.js    | 2 +-
 src/lobject.js | 1 +
 src/lstate.js  | 7 ++-----
 3 files changed, 4 insertions(+), 6 deletions(-)

(limited to 'src')

diff --git a/src/lapi.js b/src/lapi.js
index 52bc8fa..a758a66 100644
--- a/src/lapi.js
+++ b/src/lapi.js
@@ -305,7 +305,7 @@ const lua_pushlightuserdata = function(L, p) {
 };
 
 const lua_pushthread = function(L) {
-    L.stack[L.top++] = L;
+    L.stack[L.top++] = new TValue(CT.LUA_TTHREAD, L);
     assert(L.top <= L.ci.top, "stack overflow");
 
     return L.l_G.mainthread === L;
diff --git a/src/lobject.js b/src/lobject.js
index f7d07d7..5a202d4 100644
--- a/src/lobject.js
+++ b/src/lobject.js
@@ -167,6 +167,7 @@ const table_keyValue = function(key) {
         if ([CT.LUA_TNIL,
             CT.LUA_TBOOLEAN,
             CT.LUA_TSTRING,
+            CT.LUA_TTHREAD,
             CT.LUA_TNUMINT].indexOf(key.type) > -1) {
             key = key.value;
         } else if ([CT.LUA_TSHRSTR, CT.LUA_TLNGSTR].indexOf(key.type) > -1) {
diff --git a/src/lstate.js b/src/lstate.js
index 1a4cbd5..349c723 100644
--- a/src/lstate.js
+++ b/src/lstate.js
@@ -41,10 +41,9 @@ class CallInfo {
 
 }
 
-class lua_State extends lobject.TValue {
+class lua_State {
 
     constructor() {
-        super(CT.LUA_TTHREAD, null);
         this.base_ci = new CallInfo(); // Will be populated later
         this.top = 0;
         this.ci = null;
@@ -57,8 +56,6 @@ class lua_State extends lobject.TValue {
         this.errorJmp = null;
         this.nny = 1;
         this.errfunc = 0;
-
-        this.value = this;
     }
 
 }
@@ -147,7 +144,7 @@ const preinit_thread = function(L, g) {
 const lua_newthread = function(L) {
     let g = L.l_G;
     let L1 = new lua_State();
-    L.stack[L.top++] = L1;
+    L.stack[L.top++] = new lobject.TValue(CT.LUA_TTHREAD, L1);
     assert(L.top <= L.ci.top, "stack overflow");
     preinit_thread(L1, g);
     L1.hookmask = L.hookmask;
-- 
cgit v1.2.3-70-g09d2