summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjell Winblad <kjellwinblad@gmail.com>2021-03-17 12:41:42 +0100
committerKjell Winblad <kjellwinblad@gmail.com>2021-04-06 11:44:34 +0200
commit3050c8861577445a4e86b4770611e94947dbcbab (patch)
tree381065d986da6c9978f4f59f4eec3943ccc44d75
parent1bc047cf740db31cc67e9cd557b710e90f8de68f (diff)
downloaderlang-3050c8861577445a4e86b4770611e94947dbcbab.tar.gz
ct_run.c, typer.c, dialyzer.c: Fix memory leak pointed out by code_checker
-rw-r--r--erts/etc/common/ct_run.c5
-rw-r--r--erts/etc/common/dialyzer.c7
-rw-r--r--erts/etc/common/typer.c5
3 files changed, 11 insertions, 6 deletions
diff --git a/erts/etc/common/ct_run.c b/erts/etc/common/ct_run.c
index efa7ac3493..b8551eaeaf 100644
--- a/erts/etc/common/ct_run.c
+++ b/erts/etc/common/ct_run.c
@@ -188,6 +188,7 @@ int main(int argc, char** argv)
eargv = eargv_base;
eargc = 0;
push_words(emulator);
+ free(emulator);
eargc_base = eargc;
eargv = eargv + eargv_size/2;
eargc = 0;
@@ -516,7 +517,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--) {
@@ -527,7 +528,7 @@ get_default_emulator(char* progname)
break;
}
}
- return ERL_NAME;
+ return strsave(ERL_NAME);
}
#ifdef __WIN32__
diff --git a/erts/etc/common/dialyzer.c b/erts/etc/common/dialyzer.c
index 37e07878ff..ae16d0c32b 100644
--- a/erts/etc/common/dialyzer.c
+++ b/erts/etc/common/dialyzer.c
@@ -214,6 +214,9 @@ int main(int argc, char** argv)
eargv = eargv_base;
eargc = 0;
push_words(emulator);
+ if (emulator != env) {
+ free(emulator);
+ }
eargc_base = eargc;
eargv = eargv + eargv_size/2;
eargc = 0;
@@ -485,7 +488,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--) {
@@ -496,7 +499,7 @@ get_default_emulator(char* progname)
break;
}
}
- return ERL_NAME;
+ return strsave(ERL_NAME);
}
#ifdef __WIN32__
diff --git a/erts/etc/common/typer.c b/erts/etc/common/typer.c
index f13135d883..c7af00bb46 100644
--- a/erts/etc/common/typer.c
+++ b/erts/etc/common/typer.c
@@ -163,6 +163,7 @@ main(int argc, char** argv)
eargv = eargv_base;
eargc = 0;
push_words(emulator);
+ free(emulator);
eargc_base = eargc;
eargv = eargv + eargv_size/2;
eargc = 0;
@@ -410,7 +411,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--) {
@@ -421,7 +422,7 @@ get_default_emulator(char* progname)
break;
}
}
- return ERL_NAME;
+ return strsave(ERL_NAME);
}
#ifdef __WIN32__