File 2542-stdlib-fix-memory-leak-issue-with-setupterm-call-fro.patch of Package erlang
From fd3d7f37dc634fe866228fbe7c6071d47df4be8f Mon Sep 17 00:00:00 2001
From: Fredrik Frantzen <frazze@erlang.org>
Date: Mon, 16 Mar 2026 13:14:15 +0100
Subject: [PATCH 2/2] stdlib: fix memory leak issue with setupterm call from
prim_tty_nif
---
erts/emulator/nifs/common/prim_tty_nif.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/erts/emulator/nifs/common/prim_tty_nif.c b/erts/emulator/nifs/common/prim_tty_nif.c
index 66a2825145..55f03964ce 100644
--- a/erts/emulator/nifs/common/prim_tty_nif.c
+++ b/erts/emulator/nifs/common/prim_tty_nif.c
@@ -766,13 +766,19 @@ static ERL_NIF_TERM setlocale_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM a
return atom_false;
#endif
}
-
+#ifdef HAVE_TERMCAP
+static TERMINAL *saved_term = NULL;
+#endif
static ERL_NIF_TERM tty_setupterm_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) {
#ifdef HAVE_TERMCAP
int errret;
if (setupterm(NULL, -1, &errret) < 0) {
return make_errno_error(env, "setupterm");
}
+ if (saved_term) {
+ del_curterm(saved_term);
+ }
+ saved_term = cur_term;
return atom_ok;
#else
return make_enotsup(env);
@@ -1257,7 +1263,12 @@ static int load(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info)
static void unload(ErlNifEnv* env, void* priv_data)
{
-
+#ifdef HAVE_TERMCAP
+ if (saved_term) {
+ del_curterm(saved_term);
+ saved_term = NULL;
+ }
+#endif
}
static int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data,
--
2.51.0