File 0233-erts-fix-memoryleak-in-erlc.c.patch of Package erlang
From e65eed241965e5d8a147760635e23fe590cad631 Mon Sep 17 00:00:00 2001
From: frazze-jobb <frazze@erlang.org>
Date: Wed, 23 Oct 2024 10:25:25 +0200
Subject: [PATCH 2/2] erts: fix memoryleak in erlc.c
---
erts/etc/common/erlc.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/erts/etc/common/erlc.c b/erts/etc/common/erlc.c
index c6cf0de491..d376cd8975 100644
--- a/erts/etc/common/erlc.c
+++ b/erts/etc/common/erlc.c
@@ -258,6 +258,9 @@ int main(int argc, char** argv)
{
char* full_path_emulator = find_executable(emulator);
set_env("ERLC_CONFIGURATION", full_path_emulator);
+ if (full_path_emulator != emulator) {
+ free(full_path_emulator);
+ }
}
#endif
@@ -276,6 +279,9 @@ int main(int argc, char** argv)
eargv = eargv_base;
eargc = 0;
PUSH(strsave(emulator));
+ if (emulator != env) {
+ free(emulator);
+ }
eargc_base = eargc;
eargv = eargv + eargv_size/2;
eargc = 0;
@@ -1053,7 +1059,7 @@ get_default_emulator(char* progname)
char* s;
if (strlen(progname) >= sizeof(sbuf))
- return ERL_NAME;
+ return strsave(ERL_NAME);
strcpy(sbuf, progname);
for (s = sbuf+strlen(sbuf); s >= sbuf; s--) {
@@ -1064,7 +1070,7 @@ get_default_emulator(char* progname)
break;
}
}
- return ERL_NAME;
+ return strsave(ERL_NAME);
}
--
2.43.0