# LScript v2.5 Patch Release Notes

v2.5.1 |  |  |  |  |

patch: v2.5.1 | released: 05/28/2002

LScript v2.5.1 Files
Intel | Mac OS X

      Using a requester solely within the confines of an invoked UDF could cause crashing
      when the UDF returned a value to the caller.
      ctlangle() and ctlpercent() have been corrected to include sliders
      The flags() function of the Master class architecture is not invoked by Layout until
      it needs to decide the fate of the plug-in (i.e., when the scene is cleared).  This has
      caused some problems with LScript's sanity management with situations like calling
      ClearScene() from a SCENE-based Master script.  LScript now calls the flags() function
      itself the first time the process() function is invoked to ensure the proper internal
      settings exist as soon as possible.
      Some poor stack indexing in code that supports the 'fpdepth' pragma setting caused
      certain equality tests to return the incorrect result.
      A secondary definition of the SCENE global constant was cause incorrect interpretation
      of the return value of the Master flags() function when it was returned.
      A few string-related functions and functionalities have been buttressed against Very
      Large strings.
      The LScript VMap Object Agent constructor was lacking any mechanism for directly
      accessing custom VMaps defined in an object.  This has been rectified by allowing
      custom type identities to be used when referencing a VMap either by index:

            @define VMAP_PVOT  @'P','V','O','T'@
            ...
            map = VMap(VMAP_PVOT,1);

      or by type:

            map = VMap(VMAP_PVOT);

      In addition, a Vertex Map (pre-defined or custom) can now be referenced by both
      its type and its name:

            map = VMap(VMAP_PVOT,"theMap");

      or just by name:

            map = VMap("theMap");
      The getPivotRotation() method was being incorrectly mapped internally to the
      getWorldRotation() code.
      The Image Object Agent was not functioning in Modeler.
      Returning non-global memory from the ctllistbox() control's name function could
      cause a condition where the function's local memory was reclaimed by LScript's
      garbage collector before it was added to the listbox.  This often resulted in
      either garbage characters in the listbox, or just a crash of the application.

      This particular mechanism has been corrected to delay function memory cleanup
      until after the return value has been safely placed into the listbox.  This
      means that listbox entries need no longer be anchored in global variables.
      Situations where secondary UDFs appeared at the start of a script's compiled
      code stream could cause a crash when called by other UDFs.
      Requester panels were always positioned in the same location on the screen each
      time they were opened.  Requester panel attributes (screen position and dimensions)
      are now permanently memorized by LScript.  Up to the last 30 unique requester
      panels are remembered, with the oldest entry being replaced by the newest if
      that number is exceeded.

      Panels are uniquely identified for memorization by the first 80 characters of
      the requester title.  If you alter the title of your requester, it is considered
      a new (unique) requester instance.
      Construction of array-based object variable references on the left side of an
      assignment was not correctly identifying components for assignment, resulting
      in an "internal stack error" message.
      The visible() Object Agent method was not functioning correctly when applied to
      listboxes.
      An internal refresh buffering mechanism was being overrun when more than 500
      calls were made to setvalue() from a listbox callback function.
      The code that calculated the world rotation value for an object was not using
      the correct values to generate the initial matrix.
      The Bezier curve type was mapped to an obsolete implementation of the 1D
      Bezier curve in the setKeyCurve() method.  It now maps to the more current
      2D Bezier implemenation.
      Using a value of 'nil' in a sequence of string arithmetic operators could
      cause a crash of the application.
      The method used by LScript to compile regular expressions into a transportable
      internal entity used tokens that clashed with those generated by the regular
      expression compiler.  This could result in corrupted expressions when certain
      items were of the correct length, leading to failed matches or even application
      crashes.
      The ctlangle() control was assuming the provided angle measurement was in radians
      instead of degrees.