From 96db65b3d87dcbad026b4927f2043e672351a088 Mon Sep 17 00:00:00 2001 From: "kvisco%ziplink.net" Date: Wed, 29 Mar 2000 08:56:07 +0000 Subject: [PATCH] added Olivier's fix, as well as removed some debug code --- .../source/xsl/expr/ExprParser.cpp | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/extensions/transformiix/source/xsl/expr/ExprParser.cpp b/extensions/transformiix/source/xsl/expr/ExprParser.cpp index 094f2c4707bd..fab2f16d20b2 100644 --- a/extensions/transformiix/source/xsl/expr/ExprParser.cpp +++ b/extensions/transformiix/source/xsl/expr/ExprParser.cpp @@ -20,8 +20,11 @@ * Contributor(s): * Keith Visco, kvisco@ziplink.net * -- original author. + * Olivier Gerardin, ogerardin@vo.lu + * -- fixed a bug in CreateExpr (@xxx=/yyy was parsed as + * @xxx=@xxx/yyy) * - * $Id: ExprParser.cpp,v 1.4 2000/03/19 08:00:01 kvisco%ziplink.net Exp $ + * $Id: ExprParser.cpp,v 1.5 2000/03/29 08:56:07 kvisco%ziplink.net Exp $ */ /** @@ -29,7 +32,7 @@ * This class is used to parse XSL Expressions * @author Keith Visco * @see ExprLexer - * @version $Revision: 1.4 $ $Date: 2000/03/19 08:00:01 $ + * @version $Revision: 1.5 $ $Date: 2000/03/29 08:56:07 $ **/ #include "ExprParser.h" @@ -307,6 +310,7 @@ Expr* ExprParser::createExpr(ExprLexer& lexer) { } exprs.push(expr); ops.push(tok); + expr = 0; // OG, prevent reuse of expr break; } default: @@ -316,9 +320,14 @@ Expr* ExprParser::createExpr(ExprLexer& lexer) { } } + // make sure expr != 0, will this happen? + if (( expr == 0 ) && (!exprs.empty())) + expr = (Expr*) exprs.pop(); + while (!exprs.empty() ) { expr = createBinaryExpr((Expr*)exprs.pop(), expr, (Token*)ops.pop()); } + return expr; } //-- createExpr @@ -559,9 +568,12 @@ LocationStep* ExprParser::createLocationStep(ExprLexer& lexer) { parsePredicates(lstep, lexer); - String foo; - lstep->toString(foo); - //cout << "returning LocationStep: "<< foo < + //String tmp; + //lstep->toString(tmp); + //cout << "returning LocationStep: "<< tmp < + return lstep; } //-- createLocationPath