Segmentation fault при чтении ответа libcurl | C++

Есть такой код:

CURL *curl;
    CURLcode res;
    std::string readBuffer{};

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, m_url.c_str());
        
        struct curl_slist* headers = nullptr;
        curl_slist_append(headers, "Content-Type: application/json");
        curl_slist_append(headers, "Authorization: Bearer t1.9euelZqZipyJjIyTlJWczp6RkcnIye3rnpWayseMxsuWzpiSzZaWnJObzY7l8_d_QG9s-e99ZyxC_t3z9z9vbGz5731nLEL-.Y1PzNu3h3nxaYYZ_PZrL0pf8AHlbusGCUo6ZUH4JIJ-63S5J2NAS3ERu__W1Lww5fSjxWL17AFeQDuDwknTZCA");
        
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"folderId\": \"b1gvmob95yysaplct532\",\"texts\": [\"Hello\", \"World\"],\"targetLanguageCode\": \"ru\"}");
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
        // curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, [](void *contents, size_t size, size_t nmemb, void *userp)
        // {
        //     //((std::string*)userp)->append((char*)contents, 10);
        //     return size * nmemb;
        // });
        // curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);

        std::cout << curl << (res == CURLE_OK) << " " << readBuffer << std::endl;
    }

Если раскомментировать строчки, ответственные за чтение ответа, то мы ловим Segmentation fault.

Я так подозреваю, что это из-за того, что ответ с сервера возвращается без символа "\0" в конце.

Но в консоль при включении curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); ответ прекрасно как-то выводит.

Как это пофиксить и что я не так делаю?

P.S. Обнаружил, что в данном коде мне в void *userp приходит нулевой указатель. Почему?


Ответы (0 шт):