Fix more async leakage.

This commit is contained in:
Sage Vaillancourt 2022-04-11 16:49:44 -04:00 committed by Sage Vaillancourt
parent 7b014ebafa
commit 40506fd6b2
2 changed files with 7 additions and 1 deletions

View File

@ -445,7 +445,11 @@ int runTests(int detailed, int specificTest)
struct helpText h = helpTexts[hi]; struct helpText h = helpTexts[hi];
if (h.tests) { if (h.tests) {
if (detailed && h.testCount > 0) { if (detailed && h.testCount > 0) {
printf(" `%s` ", h.symbol); if (isSpecific) {
printf("`%s` ", h.symbol);
} else {
printf(" `%s` ", h.symbol);
}
} }
for (int ti = 0; ti < h.testCount; ti += 2) { for (int ti = 0; ti < h.testCount; ti += 2) {
const char* test = h.tests[ti]; const char* test = h.tests[ti];

View File

@ -61,6 +61,7 @@ void* doAsync(void* args)
promise->done = 1; promise->done = 1;
cleanPromise(promise); cleanPromise(promise);
deleteEnv(promise->env);
cleanObject(&cloned); cleanObject(&cloned);
return NULL; return NULL;
} }
@ -75,6 +76,7 @@ Object async(Object* params, int length, struct Environment* env)
.env = env, .env = env,
.object = cloneObject(params[0]), .object = cloneObject(params[0]),
}; };
env->refs += 1;
pthread_create(&promise.promise->thread, NULL, doAsync, promise.promise); pthread_create(&promise.promise->thread, NULL, doAsync, promise.promise);
return promise; return promise;