mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Bug#332804: fix infinite loop in parsing malformed functions (e.g. "ipmt(1:2:)").
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13416 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
2006-02-27 Joshua Sled <jsled@asynchronous.org>
|
||||
|
||||
* src/calculation/expression_parser.c (primary_exp): Fix infinite
|
||||
loop in parsing malformed functions (e.g. "ipmt(1:2:)"). Bug#332804.
|
||||
|
||||
* src/app-utils/gnc-exp-parser.c (func_op): No longer crashes on
|
||||
an invalid formula, though it's also not very clear what's going
|
||||
on. Basically fixes Bug#137885.
|
||||
|
||||
@@ -832,9 +832,9 @@ next_token (parser_env_ptr pe)
|
||||
|
||||
*nstr = EOS;
|
||||
if ( funcFlag ) {
|
||||
add_token( pe, FN_TOKEN );
|
||||
add_token(pe, FN_TOKEN);
|
||||
} else {
|
||||
add_token (pe, VAR_TOKEN);
|
||||
add_token(pe, VAR_TOKEN);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1147,13 +1147,12 @@ primary_exp (parser_env_ptr pe)
|
||||
assignment_op(pe);
|
||||
if ( pe->error_code )
|
||||
return;
|
||||
|
||||
funcArgCount++;
|
||||
if ( pe->Token == ')' ) {
|
||||
if (!pe->Token || pe->Token == ')') {
|
||||
break;
|
||||
}
|
||||
funcArgCount++;
|
||||
next_token(pe);
|
||||
} while ( pe->Token != ARG_TOKEN );
|
||||
} while (pe->Token != ARG_TOKEN);
|
||||
|
||||
if ( pe->Token != ')' ) {
|
||||
add_token( pe, EOS );
|
||||
|
||||
Reference in New Issue
Block a user