https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119521

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Robert Dubner <rdub...@gcc.gnu.org>:

https://gcc.gnu.org/g:29ac3adb8f72ecbe734d535b1015fe8b411316cb

commit r15-9156-g29ac3adb8f72ecbe734d535b1015fe8b411316cb
Author: Bob Dubner <rdub...@symas.com>
Date:   Wed Apr 2 12:18:08 2025 -0400

    cobol: Plug memory leak caused by intermediate_e stack-frame variables.
[PR119521]

    COBOL variables with attribute intermediate_e are being allocated on
    the stack frame, but their data was assigned using malloc(), without
    a corresponding call to free().  For numerics, the problem is solved
    with a fixed allocation of sixteen bytes for the cblc_field_t::data
    member (sixteen is big enough for all data types) and with a fixed
    allocation of 8,192 bytes for the alphanumeric type.

    In use, the intermediate numeric data types are "shrunk" to the minimum
    applicable size.  The intermediate alphanumerics, generally used as
    destination targets for functions, are trimmed as well.

    gcc/cobol

            PR cobol/119521
            * genapi.cc: (parser_division): Change comment.
            (parser_symbol_add): Change intermediate_t handling.
            * parse.y: Multiple changes to new_alphanumeric() calls.
            * parse_ante.h: Establish named constant for date function
            calls.  Change declaration of new_alphanumeric() function.
            * symbols.cc: (new_temporary_impl): Use named constant
            for default size of temporary alphanumerics.
            * symbols.h: Establish MAXIMUM_ALPHA_LENGTH constant.

    libgcobol

            PR cobol/119521
            * intrinsic.cc: (__gg__reverse): Trim final result for
intermediate_e.
            * libgcobol.cc: (__gg__adjust_dest_size): Abort on attempt to
increase
            the size of a result.  (__gg__module_name): Formatting.
            __gg__reverse(): Resize only intermediates

Reply via email to