• Alexander Barkov's avatar
    MDEV-26186 280 Bytes lost in mysys/array.c, mysys/hash.c, sql/sp.cc,... · 1a5c4c2d
    Alexander Barkov authored
    MDEV-26186 280 Bytes lost in mysys/array.c, mysys/hash.c, sql/sp.cc, sql/sp.cc, sql/item_create.cc, sql/item_create.cc, sql/sql_yacc.yy:10748 when using oracle sql_mode
    
    There was a memory leak under these conditions:
    - YYABORT was called in the end-of-rule action of a rule containing expr_lex
    - This expr_lex was not bound to any sp_lex_keeper
    
    Bison did not call %destructor <expr_lex> in this case, because its stack
    already contained a reduced upper-level rule.
    
    Fixing rules starting with RETURN, CONTINUE, EXIT keywords:
    
    Turning end-of-rule actions with YYABORT into mid-rule actions
    by adding an empty trailing { } block. This prevents the upper level
    rule from being reduced without calling %destructor <expr_lex>.
    
    In other rules expr_lex is used not immediately before the last
    end-of-rule { } block, so they don't need changes.
    1a5c4c2d
sp-memory-leak.test 814 Bytes