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

ELOQUENCE B.08.30 - patch PE83-2209200

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

This patch adds enhancements or fixes defects of the eloqcore language
runtime as released with Eloquence B.08.30-1810. This patch will be
integrated in the Eloquence B.08.30 release.

Eloquence B.08.30-1810 must be installed before applying this patch.

Severity:
 PE83-2209200: BUG FIX

Superseded patches:
 PE83-2208310: BUG FIX
 PE83-2205170: BUG FIX
 PE83-2205130: BUG FIX
 PE83-2205100: BUG FIX, ENHANCEMENT
 PE83-2112220: BUG FIX
 PE83-2106080: BUG FIX
 PE83-2102190: BUG FIX
 PE83-2009180: BUG FIX
 PE83-2006050: ENHANCEMENT
 PE83-2005150: BUG FIX
 PE83-2002240: BUG FIX
 PE83-1912110: BUG FIX
 PE83-1911270: BUG FIX
 PE83-1910010: BUG FIX
 PE83-1909100: BUG FIX, ENHANCEMENT
 PE83-1906060: BUG FIX
 PE83-1905030: BUG FIX
 PE83-1904160: BUG FIX


Patch PE83-2209200
------------------

Platforms: All

* Fixed a screen corruption problem in text based DLG with embedded
  control characters in content.


Patch PE83-2208310
------------------

Platforms: All

* DLG v2: Fixed an attribute caching problem related to DLG STOP.
  The cache was not reset. If a program continues after DLG STOP
  this could cause unexpected follow-up behavior.


Patch PE83-2205170
------------------

Platforms: All

* Fixed GET/LINK/MERGE error handling.


Patch PE83-2205130
------------------

Platforms: All

* This patch fixes a problem with printing support and WEBDLG2.
  Empty print jobs no longer generate invalid empty PDF files.


Patch PE83-2205100
------------------

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.

* This patch introduces printing support with WEBDLG2.

  When enabled, PRINTER 10 output is passed through eqpcl to create
  PDF documents that are opened in the browser.

  Please refer to the following document for more information:
  https://eloquence.marxmeier.com/doc/webdlg2/webprint.html


Patch PE83-2112220
------------------

Platforms: All

* Fixed a problem with the LIST function losing parens on nested
  exponent operators.

  Eloquence uses a right hand priority for the exponent operator.
  So 2^3^4 is understood as 2^(3^4). Parenthesis may be used to
  specify a different priority, For example, (2^3)^4.
  The LIST functionality did not output these parens.
  LIST now always outputs parens with nested exponent operators
  to minimize changes.

Notes / Related patches:

* Patch PE83-2112221 or superseding (list utility)
* Patch PE83-2112222 or superseding (Eloquence IDE)


Patch PE83-2106080
------------------

Platforms: Windows

* Fixed KBCODE results for function keys on Windows.


Patch PE83-2102190
------------------

Platforms: All

* DLG v2: Fixed a possible segment violation which could cause
  eloqcore to unexpectedly abort.

  A failed DLG call could under rare conditions use context
  information which was no longer accessible.

* DLG v2: Fixed early cache expiration for global attribute values
  such as the JDLG Application.mousemodkeys attribute.

* DLG v2: Fixed a minor memory access problem found by internal
  testing.


Patch PE83-2009180
------------------

Platforms: All

* Fixed a possible overflow error on a database read due to
  unpacking a corrupted floating field.
  A DBGET could result in an ERROR 22 for a specific corrupted
  floating point value.

Platforms: Windows

* Printing to STDOUT or STDERR added an extra CR character on
  Windows (#4321).


Patch PE83-2006050
------------------

Platforms: Windows

* New functionality:

  The statements ON SIGNAL and OFF SIGNAL and SEND SIGNAL # are now
  supported on the Windows platform.

  Programs running in eloqcore on Windows can now be signaled from other
  programs, or using the new eqsignal command line utility.

  Please note: The SEND SIGNAL # argument is a task identifier (TASKID).
  On Windows, a program's TASKID is equivalent to the process identifier
  (PID) of the associated eloqcore instance.

  Related patches:

  - PE83-2006051 or newer (eloqsd server). This patch is required.
    The SIGNAL functionality relies on a running eloqsd server.

  - PE83-2006052 or newer(eqsignal utility). This patch is optional.
    The new eqsignal command line utility allows to signal or to
    terminate/abort running programs by specifying one or multiple
    eloqcore process identifiers (PID), similar to the kill(1) utility
    provided by HP-UX and Linux.


Patch PE83-2005150
------------------

Platforms: All

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


Patch PE83-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.

Platforms: HP-UX and Linux

* Fixed an improper control character mapping with iso-8859-1 and
  iso-8859-15 locales. Control characters could be passed to the
  terminal, possibly corrupting the output.

Platforms: Windows

* Fixed a problem losing characters when using copy/paste with the
  eloqcore console window.


Patch PE83-1912110
------------------

Platforms: Windows

* Fixed various problems affecting eloqcore text mode on Windows.

  Certain actions could cause inconsistencies in the eloqcore
  screen buffer on Windows, leading to unexpected output.

  The fix delivered with patch PE83-1911270 was incomplete.

* Fixed a problem with file operations using the NUL pseudo device,
  caused by an undocumented regression in the underlying Microsoft
  runtime library.


Patch PE83-1911270
------------------

Platforms: Windows

* Fixed various problems affecting eloqcore text mode on Windows.

  Certain actions could cause inconsistencies in the eloqcore
  screen buffer on Windows, leading to unexpected output.

* If present, a user-specific eloq.rc configuration file is now
  read from the user's "home directory" on Windows.

  The Windows USERPROFILE environment variable is used to locate
  the user's home directory, typically C:\Users\USERNAME.


Patch PE83-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 PE83-1909100
------------------

Platforms: All

* Fixed unexpected abort when accessing a TYPE variable after STOP
  (#4294). A message like below was issued:

  Internal error processing line 0
  Assertion failed: (cls->magic == 0x434c5344)
  file class.c, line 534 in function get_class_ptr

* Specifying a return variable for a DLG LOAD statement could have
  no effect (for example: DLG LOAD Filename$;Status).

  On DLG LOAD failure, a runtime error could be issued unexpectedly
  instead of assigning the error code to the return variable.

* Fixed wrong character conversion when using an Unicode \u escape
  sequence in a DLG file (#4299).

* Improved DLG v2 enhanced diagnostics and error handling (#4298).

  DLG GET ".status",Stat
  DLG GET ".status_msg",Msg$
  DLG GET ".status_seg",Seg$
  DLG GET ".status_file",File$
  DLG GET ".status_line",Line

  These statements now synchronize any DLG calls still pending in
  DLG v2 bulk mode. Previously, they could be invoked only after
  a DLG status had been issued (for example in an ON ERROR handler).
  Now they can be used anytime to make sure any pending DLG calls
  have been processed.


Patch PE83-1906060
------------------

Platforms: All

* Fixed DLG GET ComboBox.line[] unexpectedly resulting in ERROR 660,
  caused by incomplete attribute cache implementation (#4290).

  Please note that this fix requires JDLG version 2.0.3 or newer,
  available for download at:
  https://eloquence.marxmeier.com/download/jdlg/2.0/

* Fixed IPv6 addresses not recognized in -dlg command line option
  and DLG SET ".driver" statement.

  IPv6 addresses are now recognized in square brackets, for example:
  eloqcore -dlg [fe80::4261:86ff:feee:9437]
  DLG SET ".driver","[fe80::4261:86ff:feee:9427]:12345"


Patch PE83-1905030
------------------

Platforms: All

* Fixed a problem where POPUP BOX could unexpectedly return error 870
  (Improper POPUP BOX format) if the definition is passed in a string
  variable, caused by an incorrect string length calculation.

* Fixed incomplete DLG GET "Tree.udata[I]" result, caused by incorrect
  string length calculation if cached attribute values are returned.

* Fixed possible crash when obtaining enhanced DLG v2 diagnostics, for
  example DLG GET ".status_msg". A message like below was output:

  Assertion failed: (seg->magic == 0x5345474d)

* Fixed unexpected asynchronous execution of certain DLG SET statements.
  The statements below are now synchonously executed:

  DLG SET "Application.browser"
  DLG SET "Application.closeprinter"
  DLG SET "Application.openprinter"
  DLG SET "Application.print"
  DLG SET "Dialog.do"
  DLG SET "System.activate"
  DLG SET "System.sound"
  DLG SET "System.start"


Patch PE83-1904160
------------------

Platforms: All

* Fixed error 653 on DLG SET when using utf-8 encoding.

  The DLG functionality may internally use the multi-byte utf-8
  encoding where the number of bytes and characters may differ.
  The max. length of a text field (.maxchars attribute) was compared
  against the number of bytes instead the number of characters.


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

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

   PE83-2209200-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.3
gzip -dc /path/to/PE83-2209200-hpux-ia64.tar.gz | tar xf -

Files:

   bin/eloqcore
   share/doc/PE83-2209200-README


Linux:

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

cd /opt/eloquence/8.3
tar xzf /path/to/PE83-2209200-linux-86_64.tar.gz

Files:

   bin/eloqcore
   share/doc/PE83-2209200-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 PE83-2209200-win32.exe. Before installation, please consider
stopping the database server, then execute the patch installation
program. Installation does not require a reboot unless the patched
files were active.

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

* Please copy the eloqcore.exe file into the Eloquence bin directory.
  (Default location: C:\Program Files\Eloquence\8.3\bin)

* Please copy the PE83-2209200-README.txt file into the Eloquence
  share\doc directory.
  (Default location: C:\Program Files\Eloquence\8.3\share\doc)

Files:

   eloqcore.exe
   PE83-2209200-README.txt