• Gleb Shchepa's avatar
    Bug #57187: more user variable fun with multiple · a44b5444
    Gleb Shchepa authored
                assignments and comparison in query
    
    A query that compares assignments of the same
    user variable caused Valgrind warnings: access
    to freed memory region.
    
    In case of a DECIMAL argument the assignment
    operator (:=) may return a pointer to a stored
    value instead of its copy when evaluated.
    The next assignment to the same variable may:
     a) overwrite the stored value with a new one
        and return the same pointer or even
     b) reallocate stored value.
    
    Thus, if we evaluate an assignment and keep
    the result pointer and then evaluate another
    assignment to the same variable, then the
    kept result pointer of the first assignment
    will point to unexpectedly changed data or
    it may be a dead pointer.
    
    That may cause wrong data or crash.
    
    The user_var_entry::val_decimal method has
    been modified to copy user variable data.
    a44b5444
item_func.cc 153 KB