From f2e4d9793bbe0ec713c28cc55b123c68afd8db90 Mon Sep 17 00:00:00 2001 From: Erik Scholz Date: Mon, 1 Jan 2024 16:27:29 +0100 Subject: [PATCH] fix: avoid some memory leaks (#136) --------- Co-authored-by: leejet --- examples/cli/main.cpp | 3 +++ stable-diffusion.cpp | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/cli/main.cpp b/examples/cli/main.cpp index 327865f..25ed766 100644 --- a/examples/cli/main.cpp +++ b/examples/cli/main.cpp @@ -560,6 +560,7 @@ int main(int argc, const char* argv[]) { if (results == NULL) { printf("generate failed\n"); + free_sd_ctx(sd_ctx); return 1; } @@ -600,6 +601,8 @@ int main(int argc, const char* argv[]) { free(results[i].data); results[i].data = NULL; } + free(results); + free_sd_ctx(sd_ctx); return 0; } diff --git a/stable-diffusion.cpp b/stable-diffusion.cpp index f67d338..10e2458 100644 --- a/stable-diffusion.cpp +++ b/stable-diffusion.cpp @@ -101,6 +101,7 @@ public: } ~StableDiffusionGGML() { + ggml_backend_free(backend); } bool load_from_file(const std::string& model_path, @@ -626,7 +627,7 @@ public: // get_ancestral_step float sigma_up = std::min(sigmas[i + 1], - std::sqrt(sigmas[i + 1] * sigmas[i + 1] * (sigmas[i] * sigmas[i] - sigmas[i + 1] * sigmas[i + 1]) / (sigmas[i] * sigmas[i]))); + std::sqrt(sigmas[i + 1] * sigmas[i + 1] * (sigmas[i] * sigmas[i] - sigmas[i + 1] * sigmas[i + 1]) / (sigmas[i] * sigmas[i]))); float sigma_down = std::sqrt(sigmas[i + 1] * sigmas[i + 1] - sigma_up * sigma_up); // Euler method @@ -802,7 +803,7 @@ public: // get_ancestral_step float sigma_up = std::min(sigmas[i + 1], - std::sqrt(sigmas[i + 1] * sigmas[i + 1] * (sigmas[i] * sigmas[i] - sigmas[i + 1] * sigmas[i + 1]) / (sigmas[i] * sigmas[i]))); + std::sqrt(sigmas[i + 1] * sigmas[i + 1] * (sigmas[i] * sigmas[i] - sigmas[i + 1] * sigmas[i + 1]) / (sigmas[i] * sigmas[i]))); float sigma_down = std::sqrt(sigmas[i + 1] * sigmas[i + 1] - sigma_up * sigma_up); auto t_fn = [](float sigma) -> float { return -log(sigma); }; auto sigma_fn = [](float t) -> float { return exp(-t); };