diff --git a/CHANGELOG.md b/CHANGELOG.md index e074583b..c5a37d82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,6 +81,9 @@ resulting in PGO build failures. * Wrong colors in the 256-color cube (https://codeberg.org/dnkl/foot/issues/479). +* Memory leak triggered by “opening” an OSC-8 URI and then resetting + the terminal without closing the URI + (https://codeberg.org/dnkl/foot/issues/495). ### Security diff --git a/terminal.c b/terminal.c index 6ec37406..9704b891 100644 --- a/terminal.c +++ b/terminal.c @@ -1649,13 +1649,12 @@ term_reset(struct terminal *term, bool hard) term->scroll_region.start = 0; term->scroll_region.end = term->rows; - free(term->vt.osc.data); - memset(&term->vt, 0, sizeof(term->vt)); - term->vt.state = 0; /* GROUND */ - - term->vt.osc8.begin = (struct coord){-1, -1}; free(term->vt.osc8.uri); - term->vt.osc8.uri = NULL; + free(term->vt.osc.data); + + memset(&term->vt, 0, sizeof(term->vt)); + term->vt.state = 0; /* STATE_GROUND */ + term->vt.osc8.begin = (struct coord){-1, -1}; if (term->grid == &term->alt) { term->grid = &term->normal;