diff options
author | Clifford Wolf <clifford@clifford.at> | 2014-02-23 01:28:29 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2014-02-23 01:28:29 +0100 |
commit | b76528d8a557dc324b1dfaa366e2b620795f582d (patch) | |
tree | 32003ff303326e6b830a82961e835c8150245eb2 /kernel | |
parent | f8c9143b2b232e2f22e6cfbf9c431b2a1b756afa (diff) | |
download | yosys-b76528d8a557dc324b1dfaa366e2b620795f582d.tar.gz yosys-b76528d8a557dc324b1dfaa366e2b620795f582d.tar.bz2 yosys-b76528d8a557dc324b1dfaa366e2b620795f582d.zip |
Fixed small memory leak in Pass::call()
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/register.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/register.cc b/kernel/register.cc index 325709664..ee14ffbad 100644 --- a/kernel/register.cc +++ b/kernel/register.cc @@ -133,8 +133,10 @@ void Pass::call(RTLIL::Design *design, std::string command) std::vector<std::string> args; char *s = strdup(command.c_str()), *sstart = s, *saveptr; s += strspn(s, " \t\r\n"); - if (*s == 0 || *s == '#') + if (*s == 0 || *s == '#') { + free(sstart); return; + } if (*s == '!') { for (s++; *s == ' ' || *s == '\t'; s++) { } char *p = s + strlen(s) - 1; @@ -144,6 +146,7 @@ void Pass::call(RTLIL::Design *design, std::string command) int retCode = system(s); if (retCode != 0) log_cmd_error("Shell command returned error code %d.\n", retCode); + free(sstart); return; } for (char *p = strtok_r(s, " \t\r\n", &saveptr); p; p = strtok_r(NULL, " \t\r\n", &saveptr)) { |