----------------------------------------------------------------------

ELOQUENCE B.08.20 - patch PE82-2205110

----------------------------------------------------------------------

This patch adds enhancements or fixes defects of the eloqcore
and list program as released with Eloquence B.08.20. This patch
will be integrated in the Eloquence B.08.20 release.

Eloquence B.08.20 must be installed before applying this patch.

Severity:
 PE82-2205110: BUG FIX

Superseded patches:
 PE82-2005150: BUG FIX
 PE82-2002240: BUG FIX
 PE82-1910010: BUG FIX
 PE82-1712180: BUG FIX
 PE82-1706140: BUG FIX
 PE82-1705260: BUG FIX
 PE82-1511050: BUG FIX
 PE82-1510290: BUG FIX
 PE82-1508110: ENHANCEMENT
 PE82-1507170: BUG FIX
 PE82-1501230: BUG FIX
 PE82-1409230: BUG FIX
 PE82-1409180: BUG FIX
 PE82-1409090: BUG FIX, ENHANCEMENT
 PE82-1404141: BUG FIX
 PE82-1309131: BUG FIX
 PE82-1309121: BUG FIX
 PE82-1308230: BUG FIX


Patch PE82-2205110
------------------

Platforms: All

* Fixed SETENV value limitation to 255 characters.

  A SETENV value exceeding 255 characters could result in unexpected behavior
  or abort the eloqcore process. This was caused by an improper check of an
  internal buffer. eloqcore was changed to allocate the buffers dynamically,
  removing the limitation.


Patch PE82-2005150
------------------

Platforms: All

* Fixed a limitation of the XUNPACK statement not supporting long
  variable names.


Patch PE82-2002240
------------------

Platforms: All

* Fixed a problem using the XPACK/XUNPACK statements with THIS
  in a class method. This caused an abort of eloqcore due to a
  failed consistency check.


Patch PE82-1910010
------------------

Platforms: All

* Fixed missing timestamp prefix for log messages written to
  a log file created with the -log command line option.

* The Eloquence IDE debugger no longer truncates string variable
  values to 256 characters in the variables window.


Patch PE82-1712180
------------------

Platforms: All

* Fixed ambiguous syntax of the MAT "." operator (multiply array
  elements) and the member operator (#4260). The multiply operator
  was changed from "." to "#".

  As of B.08.20 the MAT statement supported operating on member
  variables. However this enhancement was in conflict with the "."
  operator that is used to multiply array elements.

    MAT A=B.C

  This could either mean copy the member array B.C or multiply the
  array elements from B and C.  As a consequence the "." operator
  was changed to "#" to resolve the ambiguity.

    MAT A=B.C    ! copy
    MAT A=B#C    ! multiplication

* Fixed internal error when using a STRUCT argument with a single
  line function (#4259).

  A STRUCT argument in a single line function resulted in an abort
  message similar to below:

  DEF FNA(STRUCT B)=1

  codegen.c:1299: cg_fix_expr: Assertion `cg == 1' failed.

* Fixed message for ERROR 99 (#3682).

* Updated the database client library to B.08.20.04 (PE82-1711150).
  This fixes a memory leak when using FTS indexes.


Patch PE82-1706140
------------------

Platforms: All

* Fixed an inconsistency with LDSPEC$ which could be changed by
  statements other than LOAD when the program file was not loaded
  using a label.


Patch PE82-1705260
------------------

Platforms: Windows

* Fixed unexpected character input problems observed on Windows 10
  version 1703 (Creators Update) when using eloqcore in text mode.

  Some international and special characters, e.g. umlaut characters,
  were no longer mapped by Windows as expected. As a result, wrong
  characters were input (#4250).

  This is caused by an undocumented behavior change of the Windows
  API function ReadConsoleInputA(). On Windows 10 version 1703 this
  function does not behave as documented by Microsoft.


Patch PE82-1511050
------------------

Platforms: Windows

* Fixed a problem where output could be lost when executing the
  (SYSTEM) PRINTER IS STDOUT statement and not flushing the output
  with (SYSTEM) PRINTER SYNC or (SYSTEM) PRINTER IS 8.

  This could cause unexpected behavior with eloqcgi.


Patch PE82-1510290
------------------

Platforms: All

* Fixed an internal error executing the statement MAT A.I=B.I

  A message as below is output:
  Assertion failed: (idx >= 0 && idx < nxtmp)
  file xpxa.c, line 183 in function get_stmps

* Fixed an internal error listing the statement MAT A.I=.I

  A message as below is output:
  list.c:1497: l_operand: Assertion `idx >= 0 && idx < l_stackp' failed.

Related patches: PE82-1510291 (ide).


Patch PE82-1508110
------------------

Platforms: All

* This patch increases the limit of active workfiles from 10 to 20.


Patch PE82-1507170
------------------

Platforms: Windows

* Fixed unexpected startup problems observed on Windows 10 Preview.
  Starting eloqcore could fail with a message like below:

  eloqcore: Unable to setup i/o system

  This has been fixed with a new implementation of the eloqcore
  console window implementation, which introduces the following
  new behavior:

  - eloqcore now adapts to the configured console window size
    instead of expecting a fixed size of 80 columns and 25 lines.

  - The COLUMNS and LINES environment variables may be used to
    set the eloqcore console window to a specific size. COLUMNS
    must be set >= 80 and LINES must be set >= 24, otherwise they
    are ignored and eloqcore uses the configured console window
    size.


Patch PE82-1501230
------------------

Platforms: All

* Fixed an unexpected behavior in space dependent parsing mode
  introduced with B.08.20 (#4200).

  As of B.08.20 the parser first attempts to parse a statement
  in space independent mode, regardless if space dependent mode
  is used. Only if this fails the space dependent mode is
  considered. This allows to resolve potential ambiguities in
  space dependent mode by using the correct case.
  This change could cause unexpected behavior as space characters
  might be ignored instead of being considered a delimiter.
  The parser was changed to treat spaces as delimiters if space
  dependent mode is used.


Patch PE82-1409230
------------------

Platforms: All

* Fixed a regression in PE82-1409180 that could cause eloqcore to
  abort when calling a DLL function with a message as below:

  Assertion failed: (maxlen != 0 && type == STRING)
  in function dll_pass_var

* The eloqcore message catalog was modified to include the error
  messages from the ODBC.DLL and NET.DLL.


Patch PE82-1409180
------------------

Platforms: All

* Fixed a problem where a CALL DLL statement passing member variables
  could fail with runtime ERROR 18 (String overflow) or ERROR 603
  (DLL memory overflow).


Patch PE82-1409090
------------------

Platforms: All

* Fixed a memory corruption issue when loading a dialog resource file
  with more than 50 dialogs (#4181).
  When using a dialog driver the DLG LOAD statement did not correctly
  enforce an internal limit.

* When using a dialog driver the DLG LOAD statement limits were
  enhanced.
  - The maximum number of dialogs per dialog file is no longer limited.
    Previous versions were limited to 50 dialogs per file.
  - The max. nesting of dialog objects is no longer limited.
    Previous versions were limited to 10 nested dialog objects.

* When using a dialog driver the DLG LOAD statement parser was
  enhanced to allow modifying copied models when loading a dialog file.

  The following syntax is now supported:

  name {
    ...
  }

  This changes the context to a previously existing object and allows
  changing attributes or adding child objects.

  class name.name {
    ...
  }

  It is now valid to specify a path for the new object. This allows to
  add child objects (without changing the context).

  .name.attribute = value

  It is now valid to specify a path for an attribute. This allows to
  change attributes of child objects (without changing the context).
  This was already supported in previous versions but not documented.


Platforms: Windows

* Fixed a problem that could abort eloqcore when an unsupported
  format argument is used with the DATE$ function (#4174).


Patch PE82-1404141
------------------

Platforms: Linux, Windows

* Updates the database client library to B.08.20.03.
  This fixes a potential problem with the database client side cache
  expiration.


Patch PE82-1309131
------------------

Platforms: All

* Returning a DINTEGER or SHORT member variable from a function
  resulted in an ERROR 11.


Patch PE82-1309121
------------------

Platforms: All

* Fixed a problem where using autoloaded program code might corrupt
  internal memory.


Patch PE82-1308230
------------------

Platforms: All

* Fixed a problem when using the Eloquence IDE debugger where in
  some cases the variable view displayed a wrong number of array
  elements if an array is a class member variable.

* Fixed a problem related to the dlgsrv32 GUI driver where an IDM
  dialog file could not be loaded if a VOLUME specifier is appended
  to the DLG LOAD file name.


Installation:
-------------

Please download the patch archive that corresponds with the installed
release. The patch files follow the conventions below:

   PE82-2205110-hpux-ia64.tar.gz
        ^       ^    ^
        |       |    Architecture / OS specific build
        |       Operating system
        Patch ID


HP-UX:

In order to install this patch, you need to unpack it with gzip and tar.
Gzip is included with HP-UX. Installation requires root privileges.

cd /opt/eloquence/8.2
gzip -dc /path/to/PE82-2205110-hpux.tar.gz | tar xf -

Files:

   bin/eloqcore
   bin/list
   bin/store
   lib/nls/C/eloq.cat
   share/doc/PE82-2205110-README


Linux:

In order to install this patch, you need to unpack it with tar.
Installation requires root privileges.

cd /opt/eloquence/8.2
tar xzf /path/to/PE82-2205110-linux.tar.gz

Files:

   bin/eloqcore
   bin/list
   bin/store
   lib/nls/C/eloq.cat
   share/doc/PE82-2205110-README


Windows:

Two options are available for patch installation. The patch is
available as self extracting archive for automatic installation
and as a zip archive for manual installation. Both patches are
equivalent. Installation requires administrative capabilities.

For automatic installation of this patch, please download the patch
file PE82-2205110-win32.exe. Installation does not require a reboot
unless the patched files were active.

For a manual installation of the patch, please download the patch
file PE82-2205110-win32.zip and unpack its contents. Then perform
the following steps:

* Please copy the eloqcore.exe and list.exe files into the Eloquence
  bin directory. (Default location: C:\Program Files\Eloquence\8.2\bin)

* Please copy the eloq.cat file into the Eloquence lib\nls directory.
  (Default location: C:\Program Files\Eloquence\8.2\lib\nls)

* Please copy the PE82-2205110-README.txt file into the Eloquence
  share\doc directory.
  (Default location: C:\Program Files\Eloquence\8.2\share\doc)

Files:

   eloqcore.exe
   list.exe
   store.exe
   PE82-2205110-README.txt