Push Main return value into MainArgs.

This prevents weird things from happing on some architectures.
This commit is contained in:
Jordan Bancino 2023-05-26 21:05:06 +00:00
parent 3b659ce09e
commit efb27c9db8
2 changed files with 11 additions and 11 deletions

View file

@ -36,7 +36,7 @@ addprefix() {
: "${LDFLAGS:=-lm -pthread}" : "${LDFLAGS:=-lm -pthread}"
if [ "${DEBUG}" = "1" ]; then if [ "${DEBUG}" = "1" ]; then
CFLAGS="${CFLAGS} -o0 -g" CFLAGS="${CFLAGS} -O0 -g"
LD_EXTRA="" LD_EXTRA=""
fi fi

View file

@ -43,18 +43,18 @@ typedef struct MainArgs
{ {
Array *args; Array *args;
HashMap *env; HashMap *env;
int ret;
} MainArgs; } MainArgs;
static void * static void *
MainThread(void *argp) MainThread(void *argp)
{ {
long ret;
MainArgs *args = argp; MainArgs *args = argp;
args = argp; args = argp;
ret = Main(args->args, args->env); args->ret = Main(args->args, args->env);
return (void *) ret; return NULL;
} }
int int
@ -62,7 +62,6 @@ main(int argc, char **argv)
{ {
pthread_t mainThread; pthread_t mainThread;
size_t i; size_t i;
int ret;
char *key; char *key;
char *val; char *val;
@ -74,13 +73,14 @@ main(int argc, char **argv)
args.args = NULL; args.args = NULL;
args.env = NULL; args.env = NULL;
args.ret = EXIT_FAILURE;
args.args = ArrayCreate(); args.args = ArrayCreate();
if (!args.args) if (!args.args)
{ {
Log(LOG_ERR, "Bootstrap error: Unable to allocate memory for arguments."); Log(LOG_ERR, "Bootstrap error: Unable to allocate memory for arguments.");
ret = EXIT_FAILURE; args.ret = EXIT_FAILURE;
goto finish; goto finish;
} }
@ -88,7 +88,7 @@ main(int argc, char **argv)
if (!args.env) if (!args.env)
{ {
Log(LOG_ERR, "Bootstrap error: Unable to allocate memory for environment."); Log(LOG_ERR, "Bootstrap error: Unable to allocate memory for environment.");
ret = EXIT_FAILURE; args.ret = EXIT_FAILURE;
goto finish; goto finish;
} }
@ -117,15 +117,15 @@ main(int argc, char **argv)
if (pthread_create(&mainThread, NULL, MainThread, &args) != 0) if (pthread_create(&mainThread, NULL, MainThread, &args) != 0)
{ {
Log(LOG_ERR, "Bootstrap error: Unable to create main thread."); Log(LOG_ERR, "Bootstrap error: Unable to create main thread.");
ret = EXIT_FAILURE; args.ret = EXIT_FAILURE;
goto finish; goto finish;
} }
if (pthread_join(mainThread, (void **) &ret) != 0) if (pthread_join(mainThread, NULL) != 0)
{ {
/* Should never happen */ /* Should never happen */
Log(LOG_ERR, "Unable to join main thread."); Log(LOG_ERR, "Unable to join main thread.");
ret = EXIT_FAILURE; args.ret = EXIT_FAILURE;
goto finish; goto finish;
} }
@ -158,5 +158,5 @@ finish:
MemoryFreeAll(); MemoryFreeAll();
return ret; return args.ret;
} }