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

openSUSE Build Service is sponsored by