Hi Guys,

I was testing the fix for the memory leak condition on xpath with app
scope but found some other code is breaking that is working in 1.4.

I've tested this on

Jetty 7.0.1 with Open BD 1.5 WAR
Open BD ready to run 1.5
Tomcat Viviotech 1.4 WIndows 64bit installer  (with lib upgraded to
1.5)

It works on 1.4 in all instances i've been flipping between versions

The test case is as follows (not a very useful function i've pulled
out all the useful logic)

nightly-testcase.cfm

<cffunction name="ProcessAssetRenderers" access="public"
returnType="string" hint="a parsing routine">
        <cfargument name="container_content" required="true" type="string"
hint="The content string to process.">
        <cfscript>
                var startpos=1;
                var openpos=1;
                var closepos='';
                var nCount = 0;


                while(openpos){

                        openpos         = REFind("<[img,IMG]+[^>^<]+fileid",
arguments.container_content, startpos);
                        closepos        = REFind(">", 
arguments.container_content, openpos);

//a whole lot of parsing stuff

                }//End of while loop

        </cfscript>

        <cfreturn "not really important i break before">
</cffunction>

<cfset processAssetRenderers("foo bar")>

Error message as follows
10:     while(openpos){
11:
12:       openpos   = REFind("<[img,IMG]+[^>^<]+fileid",
arguments.container_content, startpos);
13:       closepos   = REFind(">", arguments.container_content,
openpos);
14:
^ Snippet from underlying CFML source


java.lang.ArrayIndexOutOfBoundsException: -1
        at org.apache.oro.text.regex.Perl5Matcher.__findFirst(Unknown Source)
        at org.apache.oro.text.regex.Perl5Matcher.__interpret(Unknown Source)
        at org.apache.oro.text.regex.Perl5Matcher.contains(Unknown Source)
        at
com.naryx.tagfusion.expression.function.reFind.execNoSubExpressions(Unknown
Source)
        at com.naryx.tagfusion.expression.function.reFind.execute(Unknown
Source)
        at com.naryx.tagfusion.cfm.parser.CFFunctionExpression.Eval(Unknown
Source)
        at com.naryx.tagfusion.cfm.parser.CFAssignmentExpression.Eval(Unknown
Source)
        at com.naryx.tagfusion.cfm.parser.CFExpression.Exec(Unknown Source)
        at
com.naryx.tagfusion.cfm.parser.script.CFExpressionStatement.Exec(Unknown
Source)
        at
com.naryx.tagfusion.cfm.parser.script.CFCompoundStatement.Exec(Unknown
Source)
        at
com.naryx.tagfusion.cfm.parser.script.CFWhileStatement.Exec(Unknown
Source)
        at
com.naryx.tagfusion.cfm.parser.script.CFCompoundStatement.Exec(Unknown
Source)
        at com.naryx.tagfusion.cfm.parser.runTime.run(Unknown Source)
        at com.naryx.tagfusion.cfm.tag.cfSCRIPT.render(Unknown Source)
        at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(Unknown Source)
        at com.naryx.tagfusion.cfm.tag.cfTag.renderToString(Unknown Source)
        at com.naryx.tagfusion.cfm.tag.cfFUNCTION.realRun(Unknown Source)
        at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
        at com.naryx.tagfusion.cfm.tag.cfFUNCTION.run(Unknown Source)
        at
com.naryx.tagfusion.cfm.parser.script.userDefinedFunction.execute(Unknown
Source)
        at com.naryx.tagfusion.cfm.parser.CFFunctionExpression.Eval(Unknown
Source)
        at com.naryx.tagfusion.cfm.parser.runTime.run(Unknown Source)
        at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown
Source)
        at com.naryx.tagfusion.cfm.parser.runTime.runExpression(Unknown
Source)
        at com.naryx.tagfusion.cfm.tag.cfSET.render(Unknown Source)
        at com.naryx.tagfusion.cfm.tag.cfTag.coreRender(Unknown Source)
        at com.naryx.tagfusion.cfm.tag.cfTag.render(Unknown Source)
        at com.naryx.tagfusion.cfm.file.cfFile.render(Unknown Source)
        at com.naryx.tagfusion.cfm.engine.cfSession.onRequest(Unknown Source)
        at com.naryx.tagfusion.cfm.engine.cfEngine.service(Unknown Source)
        at com.naryx.tagfusion.cfm.cfServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
191)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
127)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
298)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
857)
        at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
489)
        at java.lang.Thread.run(Thread.java:662)

Thanks

Alex

-- 
tag/function ref: http://www.openbluedragon.org/manual/
 mailing list - http://groups.google.com/group/openbd?hl=en

 Get to Texas in Feb for OpenCFSummit http://www.opencfsummit.org/

Reply via email to