Remove buggy if clause, add safeguards against buggy input

This commit is contained in:
Holger Vogt 2023-08-12 13:55:51 +02:00
parent 62f803dfa5
commit 9c2a87a469
1 changed files with 18 additions and 3 deletions

View File

@ -2411,7 +2411,6 @@ limit(double nominal_val, double abs_variation)
* of agauss()
* agauss in .param lines has been treated already
*/
static void
eval_agauss(struct card *deck, char *fcn)
{
@ -2448,14 +2447,30 @@ eval_agauss(struct card *deck, char *fcn)
begstr = copy_substring(curr_line, ap);
lparen = strchr(ap, '(');
tmp1str = midstr = gettok_char(&lparen, ')', FALSE, TRUE);
if (lparen + 1)
contstr = copy(lparen + 1);
if (!tmp1str) {
fprintf(cp_err, "ERROR: Incomplete function %s in line %s\n", fcn, curr_line);
tfree(begstr);
return;
}
contstr = copy(lparen + 1);
tmp1str++; /* skip '(' */
/* find the parameters, ignore ( ) , */
delstr = tmp2str = gettok_np(&tmp1str);
if (!tmp2str) {
fprintf(cp_err, "ERROR: Incomplete function %s in line %s\n", fcn, curr_line);
tfree(begstr);
tfree(contstr);
return;
}
x = INPevaluate(&tmp2str, &nerror, 1);
tfree(delstr);
delstr = tmp2str = gettok_np(&tmp1str);
if (!tmp2str) {
fprintf(cp_err, "ERROR: Incomplete function %s in line %s\n", fcn, curr_line);
tfree(begstr);
tfree(contstr);
return;
}
y = INPevaluate(&tmp2str, &nerror, 1);
tfree(delstr);
if (cieq(fcn, "agauss")) {