From 876728372245fafa892ba4be5359108c14362117 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 24 Oct 2024 21:28:47 +0200 Subject: [PATCH] win32: Don't crash if the settings are empty --- gtk/print/gtkprintoperation-win32.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gtk/print/gtkprintoperation-win32.c b/gtk/print/gtkprintoperation-win32.c index f56b767c06..85c04ad2a1 100644 --- a/gtk/print/gtkprintoperation-win32.c +++ b/gtk/print/gtkprintoperation-win32.c @@ -962,6 +962,8 @@ devmode_from_settings (GtkPrintSettings *settings, const char *extras_base64; gsize extras_len; const char *val; + gunichar2 *device_name; + glong device_name_len; /* If we already provided a valid hDevMode, don't initialize a new one; just lock the one we have */ if (hDevMode) @@ -986,8 +988,9 @@ devmode_from_settings (GtkPrintSettings *settings, devmode->dmSpecVersion = DM_SPECVERSION; devmode->dmSize = sizeof (DEVMODEW); - gunichar2 *device_name = g_utf8_to_utf16 (gtk_print_settings_get (settings, "win32-devmode-name"), -1, NULL, NULL, NULL); - memcpy (devmode->dmDeviceName, device_name, CCHDEVICENAME); + device_name = g_utf8_to_utf16 (gtk_print_settings_get (settings, "win32-devmode-name"), -1, NULL, &device_name_len, NULL); + if (device_name && device_name_len) + memcpy (devmode->dmDeviceName, device_name, MIN (device_name_len, CCHDEVICENAME) * sizeof (gunichar2)); g_free (device_name);