Skip to content
Snippets Groups Projects
Commit a9f7a6fd authored by Daniel Hornung's avatar Daniel Hornung
Browse files

FIX: Copying field names instead of relying on temporary pointers.

parent 4d7eb7d6
No related branches found
No related tags found
1 merge request!3Full functionality of libcaosdb
Pipeline #12420 passed with warnings
Pipeline: caosdb-octaveinttest

#12423

    ...@@ -314,11 +314,15 @@ template<typename FieldContainer, typename DimsContainer> ...@@ -314,11 +314,15 @@ template<typename FieldContainer, typename DimsContainer>
    auto mxCreateStructFromStrings(const FieldContainer &fields, const DimsContainer &dims) auto mxCreateStructFromStrings(const FieldContainer &fields, const DimsContainer &dims)
    -> mxArray * { -> mxArray * {
    auto char_fields = std::vector<const char*>(); auto char_fields = std::vector<const char*>();
    auto alloc = std::allocator<char>();
    for (auto field: fields) { for (auto field: fields) {
    char_fields.push_back(std::string(field).c_str()); auto * data = alloc.allocate(std::string(field).size());
    std::strcpy(data, std::string(field).c_str());
    char_fields.push_back(data);
    } }
    auto result = mxCreateStructArray(dims.size(), dims.data(), auto result = mxCreateStructArray(dims.size(), dims.data(),
    char_fields.size(), char_fields.data()); char_fields.size(), char_fields.data());
    // TODO (dh) Memory is not freed afterwards.
    return result; return result;
    } }
    ......
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment