[Gnucash-changes] r13416 - gnucash/trunk - Bug#332804: fix infinite
loop in parsing malformed functions (e.g. "ipmt(1:2:)").
Joshua Sled
jsled at cvs.gnucash.org
Mon Feb 27 20:26:44 EST 2006
Author: jsled
Date: 2006-02-27 20:26:43 -0500 (Mon, 27 Feb 2006)
New Revision: 13416
Trac: http://svn.gnucash.org/trac/changeset/13416
Modified:
gnucash/trunk/ChangeLog
gnucash/trunk/src/calculation/expression_parser.c
Log:
Bug#332804: fix infinite loop in parsing malformed functions (e.g. "ipmt(1:2:)").
Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog 2006-02-28 01:01:44 UTC (rev 13415)
+++ gnucash/trunk/ChangeLog 2006-02-28 01:26:43 UTC (rev 13416)
@@ -1,5 +1,8 @@
2006-02-27 Joshua Sled <jsled at 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.
Modified: gnucash/trunk/src/calculation/expression_parser.c
===================================================================
--- gnucash/trunk/src/calculation/expression_parser.c 2006-02-28 01:01:44 UTC (rev 13415)
+++ gnucash/trunk/src/calculation/expression_parser.c 2006-02-28 01:26:43 UTC (rev 13416)
@@ -832,9 +832,9 @@
*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 @@
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 );
More information about the gnucash-changes
mailing list