[Laszlo-dev] For Review: Change 20090204-dda-1 Summary: Local fix to xml-rpc to work with catcherrors=true

P T Withington ptw at laszlosystems.com
Thu Feb 5 04:29:20 PST 2009


Approved.

On 2009-02-04, at 16:26EST, Donald Anderson wrote:

> Change 20090204-dda-1 by dda at lester-2.local on 2009-02-04 15:52:38 EST
>     in /Users/dda/laszlo/src/svn/openlaszlo/trunk-g
>     for http://svn.openlaszlo.org/openlaszlo/trunk
>
> Summary: Local fix to xml-rpc to work with catcherrors=true
>
> New Features:
>
> Bugs Fixed: LPP-7721 [xml-rpc is not working when  
> "compiler.swf9.catcherrors=true"]
>
> Technical Reviewer: ptw (pending)
> QA Reviewer: (pending)
> Doc Reviewer: (pending)
>
> Documentation:
>
> Release Notes:
>
> Details:
>   ** change set made to trunk, for consideration for 4.2.0.1  
> (probably just xmlrpc.lzx)
>
>    lps/components/rpc/xmlrpc.lzx
>        Installed a workaround for the problem:
>        A closure written in xmlrpc.lzx uses arguments.callee.args,  
> but when it is processed with the try/catch block
>        (with its own closure inserted) the meaning of  
> arguments.callee.args changes.
>        This 'tryall' processing was only intended for top level  
> functions, but we needed to allow it to be
>        installed for function expressions as well to allow for state  
> methods (which appear to us as closures within an
>        initialization list).  The workaround is simply to turn off  
> catchFunctionExceptions via a pragma to
>        address this narrow case.
>
>        As this technique may be used elsewhere, we might consider a  
> more holistic solution.  Such as one of:
>           A) have the tag compiler mark 'top level' closure that it  
> generates so we can turn off 'tryall'
>              for other function closures.
>           B) detect the use of 'arguments' (would there be anything  
> else to look for?) and cause the original
>              arguments to be saved and used as appropriate.  Perhaps  
> an initial 'save' of arguments.callee.xxxx
>              if pushed out of the try block.
>           C) have a runtime check to only call use the 'tryall' try  
> block only if a tryall hasn't been established
>              yet.  Then we'd really only do this on a top level  
> function.  But who says top level functions can't
>              access arguments.callee.xxxx (also a problem with  
> solution A)?  Also, this is pretty ugly.
>
>    WEB-INF/lps/config/lps.properties
>        Changed the default for lps.properties to set catcherrors to  
> false.
>        This was apparently mistakenly enabled recently.  We don't  
> have it on as
>        the default since it is still undocumented/experimental, and  
> smokecheck
>        does not pass with it on.
>
> Tests:
>     With catcherrors=true:
>       Test case from LPP-7721
>       Tucker's test case in LPP-7514 to verify that state methods work
>     With catcherrors=false:
>       {smokecheck,lzpix} x {swf8,swf9,dhtml}
>
> Files:
> M      WEB-INF/lps/config/lps.properties
> M      lps/components/rpc/xmlrpc.lzx
>
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20090204-dda-1.tar
>
>
>
> --
>
> Don Anderson
> Java/C/C++, Berkeley DB, systems consultant
>
> voice: 617-306-2057
> email: dda at ddanderson.com
> www: http://www.ddanderson.com
>
>
>
>
>



More information about the Laszlo-dev mailing list