1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "lix/libexpr/gc-alloc.hh"

#include <cstring>
#include <string_view>

namespace nix
{

char const * gcCopyStringIfNeeded(std::string_view toCopyFrom)
{
    if (toCopyFrom.empty()) {
        return "";
    }

    size_t const size = toCopyFrom.size();
    char * cstr = gcAllocString(size + 1);
    memcpy(cstr, toCopyFrom.data(), size);
    cstr[size] = '\0';

    return cstr;
}

}