Fix some broken builds and broken hearts

This commit is contained in:
Justine Tunney 2022-07-10 09:08:38 -07:00
parent c0b325bafa
commit 331fdd1d29
2 changed files with 19 additions and 8 deletions

View file

@ -16,7 +16,9 @@
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE. PERFORMANCE OF THIS SOFTWARE.
*/ */
#include "libc/dce.h"
#include "libc/mem/mem.h" #include "libc/mem/mem.h"
#include "libc/runtime/internal.h"
#include "libc/testlib/testlib.h" #include "libc/testlib/testlib.h"
#include "libc/thread/thread.h" #include "libc/thread/thread.h"
@ -36,3 +38,9 @@ TEST(pthread_key_create, testRunsDtors_becauseNoLeakReport) {
EXPECT_EQ(0, pthread_setspecific(key, x)); EXPECT_EQ(0, pthread_setspecific(key, x));
EXPECT_EQ(x, pthread_getspecific(key)); EXPECT_EQ(x, pthread_getspecific(key));
} }
__attribute__((__constructor__)) static void init(void) {
if (IsTiny()) {
__enable_tls();
}
}

View file

@ -18,11 +18,13 @@
*/ */
#include "libc/bits/bits.h" #include "libc/bits/bits.h"
#include "libc/bits/likely.h" #include "libc/bits/likely.h"
#include "libc/intrin/kprintf.h"
#include "libc/log/log.h" #include "libc/log/log.h"
#include "libc/str/tpenc.h" #include "libc/str/tpenc.h"
#include "libc/str/utf16.h" #include "libc/str/utf16.h"
#include "third_party/double-conversion/wrapper.h" #include "third_party/double-conversion/wrapper.h"
#include "third_party/lua/lauxlib.h" #include "third_party/lua/lauxlib.h"
#include "third_party/lua/ltests.h"
#include "third_party/lua/lua.h" #include "third_party/lua/lua.h"
struct Rc { struct Rc {
@ -128,7 +130,7 @@ static struct Rc Parse(struct lua_State *L, const char *p, const char *e) {
lua_rawseti(L, -2, i++ + 1); lua_rawseti(L, -2, i++ + 1);
} }
} while (r.t); } while (r.t);
if (*(p-1) != ']') { if (*(p - 1) != ']') {
luaL_error(L, "invalid list\n"); luaL_error(L, "invalid list\n");
return (struct Rc){-1, p}; return (struct Rc){-1, p};
} }
@ -168,7 +170,7 @@ static struct Rc Parse(struct lua_State *L, const char *p, const char *e) {
lua_pushboolean(L, true); lua_pushboolean(L, true);
lua_settable(L, -3); lua_settable(L, -3);
} }
if (*(p-1) != '}') { if (*(p - 1) != '}') {
luaL_error(L, "invalid object\n"); luaL_error(L, "invalid object\n");
return (struct Rc){-1, p}; return (struct Rc){-1, p};
} }
@ -314,5 +316,6 @@ static struct Rc Parse(struct lua_State *L, const char *p, const char *e) {
*/ */
int DecodeJson(struct lua_State *L, const char *p, size_t n) { int DecodeJson(struct lua_State *L, const char *p, size_t n) {
if (n == -1) n = p ? strlen(p) : 0; if (n == -1) n = p ? strlen(p) : 0;
lua_checkstack(L, 128);
return Parse(L, p, p + n).t; return Parse(L, p, p + n).t;
} }