Skip to content

Commit

Permalink
Merge pull request #604 from hibtc/fix-delete-sequence
Browse files Browse the repository at this point in the history
Fix delete sequence
  • Loading branch information
ldeniau committed Mar 16, 2018
2 parents d44b03e + accce03 commit 44ccc33
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 28 deletions.
16 changes: 3 additions & 13 deletions src/mad_exec.c
Expand Up @@ -3,21 +3,11 @@
static void
exec_delete_sequ(const char* name)
{
struct sequence* keep = current_sequ;
int spos;
if ((spos = name_list_pos(name, sequences->list)) >= 0) {
current_sequ = sequences->sequs[spos];
if (current_sequ->ex_start != NULL) { /* delete expanded */
current_sequ->ex_nodes = delete_node_list(current_sequ->ex_nodes);
current_sequ->ex_start = delete_node_ring(current_sequ->ex_start);
current_sequ->orbits = delete_vector_list(current_sequ->orbits);
}
sequences->sequs[spos] = delete_sequence(current_sequ);
remove_from_sequ_list(current_sequ, sequences);
current_sequ = keep;
struct sequence* sequ = find_sequence(name, sequences);
if (sequ) {
delete_sequence(sequ);
}
else warning("sequence to be deleted does not exist:", name);
return;
}

void
Expand Down
20 changes: 6 additions & 14 deletions src/mad_seq.c
Expand Up @@ -618,7 +618,6 @@ make_sequ_from_line(char* name)
{
char** tmp = NULL;
int pos = name_list_pos(name, line_list->list);
struct sequence* old_sequ = NULL;
struct macro* line;
int mpos = name_list_pos("marker", defined_commands->list);
struct command* clone = clone_command(defined_commands->commands[mpos]);
Expand All @@ -632,9 +631,8 @@ make_sequ_from_line(char* name)
expand_line(line_buffer); /* act on '-' and rep. count */

current_sequ = new_sequence(name, 0); /* node positions = centre */
old_sequ = find_sequence(name, sequences);
delete_sequence(find_sequence(name, sequences));
add_to_sequ_list(current_sequ, sequences);
if (old_sequ) old_sequ = delete_sequence(old_sequ);
if (current_sequ->cavities != NULL) current_sequ->cavities->curr = 0;
else current_sequ->cavities = new_el_list(100);
if (occ_list == NULL)
Expand Down Expand Up @@ -1487,26 +1485,25 @@ new_sequ_node(struct sequence* sequ, int occ_cnt)
return p;
}

struct sequence*
void
delete_sequence(struct sequence* sequ)
{
const char *rout_name = "delete_sequence";
struct sequence* seq;
if (!sequ) return;
if (sequ->ex_start != NULL)
{
sequ->ex_nodes = delete_node_list(sequ->ex_nodes);
sequ->ex_start = delete_node_ring(sequ->ex_start);
sequ->orbits = delete_vector_list(sequ->orbits);
myfree(rout_name, sequ->all_nodes);
}
if ((seq = find_sequence(sequ->name, sequences)))
remove_from_sequ_list(seq, sequences);
if (sequ == find_sequence(sequ->name, sequences))
remove_from_sequ_list(sequ, sequences);
if (sequ->l_expr) sequ->l_expr = delete_expression(sequ->l_expr);
sequ->nodes = delete_node_list(sequ->nodes);
sequ->start = delete_node_ring(sequ->start);
if (sequ->cavities) sequ->cavities = delete_el_list(sequ->cavities);
myfree(rout_name, sequ);
return NULL;
}

void
Expand Down Expand Up @@ -1568,12 +1565,7 @@ enter_sequence(struct in_cmd* cmd)
}
}

if ((pos = name_list_pos(toks[aux_pos], sequences->list)) >= 0) {
// sequence exists already; delete the old one
/*printf("enter_sequence: removing %s\n", sequences->sequs[pos]->name);*/
remove_from_sequ_list(sequences->sequs[pos], sequences);
sequences->sequs[pos] = delete_sequence(sequences->sequs[pos]);
}
delete_sequence(find_sequence(toks[aux_pos], sequences));

current_sequ = new_sequence(toks[aux_pos], k);
add_to_sequ_list(current_sequ, sequences);
Expand Down
2 changes: 1 addition & 1 deletion src/mad_seq.h
Expand Up @@ -68,7 +68,7 @@ struct sequence_list /* contains list of sequence pointers sorted by name */

struct node* new_sequ_node(struct sequence*, int occ_cnt);
struct sequence* new_sequence(const char* name, int ref);
struct sequence* delete_sequence(struct sequence*);
void delete_sequence(struct sequence*);
struct sequence_list* new_sequence_list(int length);
struct sequence* find_sequence(const char* name, struct sequence_list*);

Expand Down

0 comments on commit 44ccc33

Please sign in to comment.