Ticket Hash: e59985dfdfbecfb1238b91f1094fe31344e4fa8f
Title: type_name:job allocates on the stack
Status: Fixed Type: Code_Defect
Severity: Critical Priority: Immediate
Subsystem: Resolution: Fixed
Last Modified: 2019-08-17 05:05:06
Version Found In: <91
User Comments:
luismachuca added on 2019-02-26 13:42:25: (text/x-fossil-wiki)
<tt>library/type_name.hpp</tt> line 30: the header provides typeid demangle, however for compilers using <tt>cxxabi</tt> (eg.: GCC), it calls <tt>abi::__cxa_demangle</tt> with a buffer allocated on the stack.

<verbatim>
    char buf[1024]; // <-- error is this
    size_t size=sizeof(buf);
    int status;
    char* res = abi::__cxa_demangle (name, buf, &size, &status);
</verbatim>

Relevant quotes from the cxxabi documentation:

<blockquote>output_buffer
    A region of memory, allocated with malloc, of *length bytes, into which the demangled name is stored.
</blockquote>

<blockquote>    The caller is responsible for deallocating this memory using free.
</blockquote>

Sourced by [1] referencing [2].

  *  [1] [https://stackoverflow.com/questions/281818/unmangling-the-result-of-stdtype-infoname]
  *  [2] [http://panthema.net/2008/0901-stacktrace-demangled/cxa_demangle.html]

luismachuca (claiming to be 17ed6f42) added on 2019-08-17 05:05:06: (text/x-fossil-wiki)
Fixed in [17ed6f42].