From 3c71c42c3117fd4affceb7312105a4f880a235cd Mon Sep 17 00:00:00 2001 From: Bruno Lopes Date: Tue, 31 Mar 2026 11:36:01 -0300 Subject: [PATCH] app, app-tools, libgimp: Use freopen_s on Windows to fix CRT_INSECURE_DEPRECATE --- app-tools/gimp-debug-tool.c | 11 +++++++++++ app/main.c | 11 +++++++++++ libgimp/gimp.c | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/app-tools/gimp-debug-tool.c b/app-tools/gimp-debug-tool.c index c6bb16d44b..baf7b46e57 100644 --- a/app-tools/gimp-debug-tool.c +++ b/app-tools/gimp-debug-tool.c @@ -65,8 +65,19 @@ main (int argc, if (AttachConsole (ATTACH_PARENT_PROCESS) != 0 && ! g_getenv ("TERM") && ! g_getenv ("SHELL")) { /* 'r' is needed to prevent interleaving and '+' to support colors */ +#ifndef _UCRT freopen ("CONOUT$", "r+", stdout); freopen ("CONOUT$", "r+", stderr); +#else + FILE* fileOut; + FILE* fileErr; + + errno_t errOut = freopen_s (&fileOut, "CONOUT$", "r+", stdout); + errno_t errErr = freopen_s (&fileErr, "CONOUT$", "r+", stderr); + + if (errOut != 0 || errErr != 0) + g_warning ("Failed to redirect streams to CONOUT$. stdout: %d, stderr: %d", errOut, errErr); +#endif _flushall (); { diff --git a/app/main.c b/app/main.c index f3a72fe7e3..4fc373eeaa 100644 --- a/app/main.c +++ b/app/main.c @@ -962,8 +962,19 @@ gimp_attach_console_window (void) if (AttachConsole (ATTACH_PARENT_PROCESS) != 0) { /* 'r' is needed to prevent interleaving and '+' to support colors */ +#ifndef _UCRT freopen ("CONOUT$", "r+", stdout); freopen ("CONOUT$", "r+", stderr); +#else + FILE* fileOut; + FILE* fileErr; + + errno_t errOut = freopen_s (&fileOut, "CONOUT$", "r+", stdout); + errno_t errErr = freopen_s (&fileErr, "CONOUT$", "r+", stderr); + + if (errOut != 0 || errErr != 0) + g_warning ("Failed to redirect streams to CONOUT$. stdout: %d, stderr: %d", errOut, errErr); +#endif _flushall (); { diff --git a/libgimp/gimp.c b/libgimp/gimp.c index b117ae49d9..cefd101492 100644 --- a/libgimp/gimp.c +++ b/libgimp/gimp.c @@ -205,8 +205,19 @@ gimp_main (GType plug_in_type, if (AttachConsole (ATTACH_PARENT_PROCESS) != 0 && ! g_getenv ("TERM") && ! g_getenv ("SHELL")) { /* 'r' is needed to prevent interleaving and '+' to support colors */ +#ifndef _UCRT freopen ("CONOUT$", "r+", stdout); freopen ("CONOUT$", "r+", stderr); +#else + FILE* fileOut; + FILE* fileErr; + + errno_t errOut = freopen_s (&fileOut, "CONOUT$", "r+", stdout); + errno_t errErr = freopen_s (&fileErr, "CONOUT$", "r+", stderr); + + if (errOut != 0 || errErr != 0) + g_warning ("Failed to redirect streams to CONOUT$. stdout: %d, stderr: %d", errOut, errErr); +#endif _flushall (); }