1161.2.1 |
Dynamic memory enhancement: memory pools for SBXs and functions are now organized by nesting level, allowing all memory for levels N+ to be freed when returning from a level N call. This vastly reduces the amount of memory accumulation when the main program spends most of its time within a single top-level SBX or function that in turn makes heavy use of nested SBX/function calls and dynamic memory. |
1161.2.1 |
Dynamic memory bug fix: Close a loophole in the 1161.1 refinement that was allowing one string to spill over into the next when a fixed string with no trailing null was passed as a parameter to a routine receiving in into a dynamic string. |
1161.2.1 |
Dynamic memory bug fix: Remove spurious "out of memory" error caused by assigning a null value to a dynamic string during parameter passing. |
1161.2.1 |
MIAME.INI processing refinement: INCLUDE= was not translating pseudo- %ENV% variables (such as %MIAME%) that are known to A-Shell but not Windows. |
1161.1.1 |
Dynamic memory refinement: strings are now always stored with a trailing null. (Previously it was typical but not guaranteed.) The null avoids problems with some SBRs which pass string arguments to C API routines expecting trailing nulls. |
1161.1.2 |
XPUTARG/XGETARG refinement: When copying from a string source parameter to a dynamic X destination parameter, the X variable is now sized to match the logical (rather than the physical) size of the source string. This matches what happens in an assignment statement. |
1161.0.1 |
Runtime bug fix: RUN modules compiled with /AV/X:2 containing dynamic variables (which have the header flag F1F6 according to VERSYS) were not being recognized as valid by the program loader, resulting in "Incompatible run module". |