Work in progress

Fixing memory leaks
Unit tests passing
This commit is contained in:
Michael Tryby
2019-04-19 21:21:58 -04:00
parent 7537be1ec9
commit e9650d2d6d
5 changed files with 45 additions and 89 deletions

View File

@@ -117,6 +117,7 @@ void set_pattern_index(list_node_t *lnode, int pattern_index)
}
char *get_category_name(list_node_t *lnode)
// Be advised: caller must free memory returned
{
return strdup(get_demand_data(lnode)->category_name);
}

View File

@@ -334,6 +334,7 @@ int saveinpfile(Project *pr, const char *fname)
list_t *dlist;
list_node_t *lnode;
char *temp = NULL;
for (i = 1; i <= net->Njuncs; i++)
{
@@ -345,7 +346,10 @@ int saveinpfile(Project *pr, const char *fname)
if ((j = get_pattern_index(lnode)) > 0) sprintf(s1, " %-31s", net->Pattern[j].ID);
else strcpy(s1, " ");
fprintf(f, "\n%s %-31s", s, s1);
if (get_category_name(lnode)) fprintf(f, " ;%s", get_category_name(lnode));
if (temp = get_category_name(lnode)) {
fprintf(f, " ;%s", temp);
free(temp);
}
}
}
}

View File

@@ -797,12 +797,12 @@ void adjustpattern(int *pat, int index)
}
void _adjustpattern(list_node_t *lnode, int index)
void _adjustpattern(list_node_t *lnode, int del_idx)
{
int pat = get_pattern_index(lnode);
int pat_idx = get_pattern_index(lnode);
if (pat == index) set_pattern_index(lnode, 0);
else if (pat > index) set_pattern_index(lnode, pat--);
if (pat_idx == del_idx) set_pattern_index(lnode, 0);
else if (pat_idx > del_idx) set_pattern_index(lnode, --pat_idx);
}