Skip to content

Commit f2e4d97

Browse files
Green-Skyleejet
andauthored
fix: avoid some memory leaks (leejet#136)
--------- Co-authored-by: leejet <leejet714@gmail.com>
1 parent 4a5e7b5 commit f2e4d97

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

examples/cli/main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,7 @@ int main(int argc, const char* argv[]) {
560560

561561
if (results == NULL) {
562562
printf("generate failed\n");
563+
free_sd_ctx(sd_ctx);
563564
return 1;
564565
}
565566

@@ -600,6 +601,8 @@ int main(int argc, const char* argv[]) {
600601
free(results[i].data);
601602
results[i].data = NULL;
602603
}
604+
free(results);
605+
free_sd_ctx(sd_ctx);
603606

604607
return 0;
605608
}

stable-diffusion.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class StableDiffusionGGML {
101101
}
102102

103103
~StableDiffusionGGML() {
104+
ggml_backend_free(backend);
104105
}
105106

106107
bool load_from_file(const std::string& model_path,
@@ -626,7 +627,7 @@ class StableDiffusionGGML {
626627

627628
// get_ancestral_step
628629
float sigma_up = std::min(sigmas[i + 1],
629-
std::sqrt(sigmas[i + 1] * sigmas[i + 1] * (sigmas[i] * sigmas[i] - sigmas[i + 1] * sigmas[i + 1]) / (sigmas[i] * sigmas[i])));
630+
std::sqrt(sigmas[i + 1] * sigmas[i + 1] * (sigmas[i] * sigmas[i] - sigmas[i + 1] * sigmas[i + 1]) / (sigmas[i] * sigmas[i])));
630631
float sigma_down = std::sqrt(sigmas[i + 1] * sigmas[i + 1] - sigma_up * sigma_up);
631632

632633
// Euler method
@@ -802,7 +803,7 @@ class StableDiffusionGGML {
802803

803804
// get_ancestral_step
804805
float sigma_up = std::min(sigmas[i + 1],
805-
std::sqrt(sigmas[i + 1] * sigmas[i + 1] * (sigmas[i] * sigmas[i] - sigmas[i + 1] * sigmas[i + 1]) / (sigmas[i] * sigmas[i])));
806+
std::sqrt(sigmas[i + 1] * sigmas[i + 1] * (sigmas[i] * sigmas[i] - sigmas[i + 1] * sigmas[i + 1]) / (sigmas[i] * sigmas[i])));
806807
float sigma_down = std::sqrt(sigmas[i + 1] * sigmas[i + 1] - sigma_up * sigma_up);
807808
auto t_fn = [](float sigma) -> float { return -log(sigma); };
808809
auto sigma_fn = [](float t) -> float { return exp(-t); };

0 commit comments

Comments
 (0)