Work in progress
Fixing memory leaks Unit tests passing
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user