From 04055b3f658bb9197c7e209a8397f79590ae537e Mon Sep 17 00:00:00 2001 From: Marcin Serwin Date: Mon, 5 May 2025 21:20:28 +0200 Subject: [PATCH] tilem: add gcc14 patch The patch fixes a bug with the allocation of a new Tilem macro action: instead of allocating the macro action itself, the code allocates a string for holding the macro value. This happens to work if the length of `value` is greater than the size of TilemMacroAtom since pointers returned from malloc can be used for anything. --- pkgs/by-name/ti/tilem/gcc14-fix.patch | 13 +++++++++++++ pkgs/by-name/ti/tilem/package.nix | 1 + 2 files changed, 14 insertions(+) create mode 100644 pkgs/by-name/ti/tilem/gcc14-fix.patch diff --git a/pkgs/by-name/ti/tilem/gcc14-fix.patch b/pkgs/by-name/ti/tilem/gcc14-fix.patch new file mode 100644 index 000000000000..f1ef81e57cd6 --- /dev/null +++ b/pkgs/by-name/ti/tilem/gcc14-fix.patch @@ -0,0 +1,13 @@ +diff --git a/gui/macro.c b/gui/macro.c +index ae8db8b..226d48f 100644 +--- a/gui/macro.c ++++ b/gui/macro.c +@@ -86,7 +86,7 @@ void tilem_macro_add_action(TilemMacro* macro, int type, char * value) { + macro->actions = tilem_macro_actions_new(macro, n + 1); + + /* Then we need to save the action */ +- macro->actions[n] = g_new(char, strlen(value)); /* FIXME : gcc says : "assignment from incompatible pointer type" ??? */ ++ macro->actions[n] = g_new(TilemMacroAtom, 1); /* FIXME : gcc says : "assignment from incompatible pointer type" ??? */ + macro->actions[n]->value = g_strdup(value); + macro->actions[n]->type = type; + macro->n++; diff --git a/pkgs/by-name/ti/tilem/package.nix b/pkgs/by-name/ti/tilem/package.nix index 400bcd36923e..a5caea4922cc 100644 --- a/pkgs/by-name/ti/tilem/package.nix +++ b/pkgs/by-name/ti/tilem/package.nix @@ -27,6 +27,7 @@ stdenv.mkDerivation rec { libticables2 libticalcs2 ]; + patches = [ ./gcc14-fix.patch ]; env.NIX_CFLAGS_COMPILE = toString [ "-lm" ]; meta = with lib; { homepage = "http://lpg.ticalc.org/prj_tilem/";