summaryrefslogtreecommitdiff
path: root/src/logic/slbt_exec_compile.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/logic/slbt_exec_compile.c')
-rw-r--r--src/logic/slbt_exec_compile.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/logic/slbt_exec_compile.c b/src/logic/slbt_exec_compile.c
index f9cd1d2..16c8332 100644
--- a/src/logic/slbt_exec_compile.c
+++ b/src/logic/slbt_exec_compile.c
@@ -204,9 +204,13 @@ int slbt_exec_compile(
}
}
- if (((ret = slbt_spawn(ectx,true)) < 0) || ectx->exitcode) {
+ if ((slbt_spawn(ectx,true) < 0) && (ectx->pid < 0)) {
slbt_free_exec_ctx(actx);
return SLBT_SYSTEM_ERROR(dctx,0);
+
+ } else if (ectx->exitcode) {
+ slbt_free_exec_ctx(actx);
+ return SLBT_CUSTOM_ERROR(dctx,SLBT_ERR_COMPILE_ERROR);
}
if (cctx->drvflags & SLBT_DRIVER_STATIC)
@@ -235,9 +239,13 @@ int slbt_exec_compile(
}
}
- if (((ret = slbt_spawn(ectx,true)) < 0) || ectx->exitcode) {
+ if ((slbt_spawn(ectx,true) < 0) && (ectx->pid < 0)) {
slbt_free_exec_ctx(actx);
return SLBT_SYSTEM_ERROR(dctx,0);
+
+ } else if (ectx->exitcode) {
+ slbt_free_exec_ctx(actx);
+ return SLBT_CUSTOM_ERROR(dctx,SLBT_ERR_COMPILE_ERROR);
}
}