Skip to content
Snippets Groups Projects
Commit b3eca300 authored by Jonathan Schöbel's avatar Jonathan Schöbel
Browse files

Grammar: fix rule_add

The allocated memory wasn't freed in case of an error. Also the wrong
constant has been used, which happens to be the same.
parent 24473583
No related branches found
No related tags found
No related merge requests found
......@@ -40,7 +40,7 @@ FILE_NAME_7=937;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprg
FILE_NAME_8=909;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprgm%2Flanguage%2FGSAT%2Fsrc%2Flib%2Fstatus.h;0;8
FILE_NAME_9=3758;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprgm%2Flanguage%2FGSAT%2Fsrc%2Flib%2Flog.c;0;8
FILE_NAME_10=1373;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprgm%2Flanguage%2FGSAT%2Fsrc%2Flib%2Flog.h;0;8
FILE_NAME_11=22090;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprgm%2Flanguage%2FGSAT%2Fsrc%2Flib%2Fgrammar.c;0;8
FILE_NAME_11=19166;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprgm%2Flanguage%2FGSAT%2Fsrc%2Flib%2Fgrammar.c;0;8
FILE_NAME_12=6103;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprgm%2Flanguage%2FGSAT%2Fsrc%2Flib%2Fgrammar.h;0;8
FILE_NAME_13=6482;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprgm%2Flanguage%2FGSAT%2Fsrc%2Flib%2Ffile.c;0;8
FILE_NAME_14=1457;C;0;EUTF-8;1;1;0;%2Fhome%2Fjonathan%2FDocuments%2Fprojects%2Fprgm%2Flanguage%2FGSAT%2Fsrc%2Flib%2Ffile.h;0;8
......
......@@ -866,7 +866,7 @@ add_rule (struct GR_Grammar * grammar, struct rule_info rule,
< grammar->rule_n)
{
set_status (status, E_DOMAIN, 2, "too many rules");
return SYMBOL_ERR;
return RULE_ERR;
}
new_rules = realloc (grammar->rules, sizeof (struct rule_info)
......@@ -874,7 +874,7 @@ add_rule (struct GR_Grammar * grammar, struct rule_info rule,
if (NULL == new_rules)
{
set_status (status, E_ALLOC, 3, "realloc failed");
return SYMBOL_ERR;
return RULE_ERR;
}
grammar->rules = new_rules;
......@@ -934,7 +934,13 @@ GR_Grammar_add_rule (struct GR_Grammar * grammar,
return RULE_ERR;
}
return add_rule (grammar, rule_data, status);
if (RULE_ERR == add_rule (grammar, rule_data, status))
{
Rule_free (&rule_data.rule);
return RULE_ERR;
}
return rule_data.id;
}
rule_t
......@@ -965,10 +971,15 @@ GR_Grammar_raw_add_rule (struct GR_Grammar * grammar,
Rule_move (&rule_data.rule, rule);
if (RULE_ERR == add_rule (grammar, rule_data, status))
{
return RULE_ERR;
}
/* let the caller reuse the rule */
Rule_init (rule);
return add_rule (grammar, rule_data, status);
return rule_data.id;
}
/*@null@*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment