From 107b1fce7e880eedfec9901c69adbeb0671eafea Mon Sep 17 00:00:00 2001 From: Delta-in-hub Date: Sun, 13 Jul 2025 00:46:10 +0800 Subject: [PATCH 1/2] Fix: Memory leak in makeRequest due to un-freed curl_slist --- include/openai/openai.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/openai/openai.hpp b/include/openai/openai.hpp index 16a65c9..f8e3142 100644 --- a/include/openai/openai.hpp +++ b/include/openai/openai.hpp @@ -218,6 +218,9 @@ inline Response Session::makeRequest(const std::string& contentType) { res_ = curl_easy_perform(curl_); + /* free the list of headers */ + curl_slist_free_all(headers); + bool is_error = false; std::string error_msg{}; if(res_ != CURLE_OK) { From a6438d88d5d84be46577960494334628c0bff572 Mon Sep 17 00:00:00 2001 From: Delta-in-hub Date: Sun, 13 Jul 2025 12:47:18 +0800 Subject: [PATCH 2/2] feat: configure base URL and ensure it is formatted correctly --- include/openai/openai.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/openai/openai.hpp b/include/openai/openai.hpp index f8e3142..71f2967 100644 --- a/include/openai/openai.hpp +++ b/include/openai/openai.hpp @@ -441,7 +441,7 @@ class OpenAI { } if (api_base_url.empty()) { if(const char* env_p = std::getenv("OPENAI_API_BASE")) { - base_url = std::string{env_p} + "/"; + base_url = std::string{env_p}; } else { base_url = "https://api.openai.com/v1/"; @@ -450,6 +450,9 @@ class OpenAI { else { base_url = api_base_url; } + if (not base_url.empty() and base_url.back() != '/') { + base_url += '/'; + } session_.setUrl(base_url); session_.setToken(token_, organization_); session_.setBeta(beta);