[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