Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0463-ct_run.c-typer.c-dialyzer.c-Fix-memory-lea...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0463-ct_run.c-typer.c-dialyzer.c-Fix-memory-leak-pointed-.patch of Package erlang
From 3050c8861577445a4e86b4770611e94947dbcbab Mon Sep 17 00:00:00 2001 From: Kjell Winblad <kjellwinblad@gmail.com> Date: Wed, 17 Mar 2021 12:41:42 +0100 Subject: [PATCH 03/10] ct_run.c, typer.c, dialyzer.c: Fix memory leak pointed out by code_checker --- erts/etc/common/ct_run.c | 5 +++-- erts/etc/common/dialyzer.c | 7 +++++-- erts/etc/common/typer.c | 5 +++-- 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__ -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor