From 2370eedda575e32ade978397a06d3dbfbd01457e Mon Sep 17 00:00:00 2001 From: mhoyer-streamlabs Date: Wed, 7 Jan 2026 13:40:44 -0600 Subject: [PATCH 1/6] Release a settings object --- obs-studio-server/source/nodeobs_settings.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/obs-studio-server/source/nodeobs_settings.cpp b/obs-studio-server/source/nodeobs_settings.cpp index 4d4051784..3bc0d9a3d 100644 --- a/obs-studio-server/source/nodeobs_settings.cpp +++ b/obs-studio-server/source/nodeobs_settings.cpp @@ -802,6 +802,7 @@ std::vector OBS_settings::getStreamSettings(StreamServiceId service streamSettings.push_back(serviceConfiguration); obs_properties_destroy(properties); + obs_data_release(settings); return streamSettings; } @@ -844,9 +845,10 @@ bool OBS_settings::saveStreamSettings(std::vector streamSettings, S break; } newserviceTypeValue = value; + + //first setting is always stream type (if it's sent at all) - get default settings to be filled in settings = obs_service_defaults(newserviceTypeValue.c_str()); if (currentStreamType.compare(newserviceTypeValue) != 0) { - if (newserviceTypeValue.compare("rtmp_common") == 0) { obs_data_set_string(settings, "streamType", "rtmp_common"); obs_data_set_string(settings, "service", "Twitch"); @@ -888,7 +890,7 @@ bool OBS_settings::saveStreamSettings(std::vector streamSettings, S } obs_data_t *hotkeyData = obs_hotkeys_save_service(currentService); - + obs_service_t *newService = obs_service_create(newserviceTypeValue.c_str(), "default_service", settings, hotkeyData); if (serviceChanged) { From 01c415373604013c22bc97541f60a5bae097a647 Mon Sep 17 00:00:00 2001 From: mhoyer-streamlabs Date: Wed, 7 Jan 2026 13:51:05 -0600 Subject: [PATCH 2/6] Formatting --- obs-studio-server/source/nodeobs_settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obs-studio-server/source/nodeobs_settings.cpp b/obs-studio-server/source/nodeobs_settings.cpp index 3bc0d9a3d..9f3852241 100644 --- a/obs-studio-server/source/nodeobs_settings.cpp +++ b/obs-studio-server/source/nodeobs_settings.cpp @@ -890,7 +890,7 @@ bool OBS_settings::saveStreamSettings(std::vector streamSettings, S } obs_data_t *hotkeyData = obs_hotkeys_save_service(currentService); - + obs_service_t *newService = obs_service_create(newserviceTypeValue.c_str(), "default_service", settings, hotkeyData); if (serviceChanged) { From 3a4ce2cbc45e4f1e0faf9bdd69593a6d98cbde51 Mon Sep 17 00:00:00 2001 From: mhoyer-streamlabs Date: Wed, 7 Jan 2026 13:57:01 -0600 Subject: [PATCH 3/6] Formatting --- obs-studio-server/source/nodeobs_settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obs-studio-server/source/nodeobs_settings.cpp b/obs-studio-server/source/nodeobs_settings.cpp index 9f3852241..8e336a55b 100644 --- a/obs-studio-server/source/nodeobs_settings.cpp +++ b/obs-studio-server/source/nodeobs_settings.cpp @@ -846,7 +846,7 @@ bool OBS_settings::saveStreamSettings(std::vector streamSettings, S } newserviceTypeValue = value; - //first setting is always stream type (if it's sent at all) - get default settings to be filled in + //first setting is always stream type (if it's sent at all) - get default settings to be filled in settings = obs_service_defaults(newserviceTypeValue.c_str()); if (currentStreamType.compare(newserviceTypeValue) != 0) { if (newserviceTypeValue.compare("rtmp_common") == 0) { From d2d58b3c687d75845ef1d26d7a9c14adca7c6142 Mon Sep 17 00:00:00 2001 From: mhoyer-streamlabs Date: Wed, 7 Jan 2026 13:40:44 -0600 Subject: [PATCH 4/6] Release a settings object --- obs-studio-server/source/nodeobs_settings.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/obs-studio-server/source/nodeobs_settings.cpp b/obs-studio-server/source/nodeobs_settings.cpp index 4d4051784..8e336a55b 100644 --- a/obs-studio-server/source/nodeobs_settings.cpp +++ b/obs-studio-server/source/nodeobs_settings.cpp @@ -802,6 +802,7 @@ std::vector OBS_settings::getStreamSettings(StreamServiceId service streamSettings.push_back(serviceConfiguration); obs_properties_destroy(properties); + obs_data_release(settings); return streamSettings; } @@ -844,9 +845,10 @@ bool OBS_settings::saveStreamSettings(std::vector streamSettings, S break; } newserviceTypeValue = value; + + //first setting is always stream type (if it's sent at all) - get default settings to be filled in settings = obs_service_defaults(newserviceTypeValue.c_str()); if (currentStreamType.compare(newserviceTypeValue) != 0) { - if (newserviceTypeValue.compare("rtmp_common") == 0) { obs_data_set_string(settings, "streamType", "rtmp_common"); obs_data_set_string(settings, "service", "Twitch"); From 839fd9e92f2739bc1da78e20b51fd6c3f1029d03 Mon Sep 17 00:00:00 2001 From: mhoyer-streamlabs Date: Thu, 8 Jan 2026 11:00:58 -0600 Subject: [PATCH 5/6] Use auto release for settings --- obs-studio-server/source/nodeobs_settings.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/obs-studio-server/source/nodeobs_settings.cpp b/obs-studio-server/source/nodeobs_settings.cpp index 8e336a55b..5685947b5 100644 --- a/obs-studio-server/source/nodeobs_settings.cpp +++ b/obs-studio-server/source/nodeobs_settings.cpp @@ -529,7 +529,7 @@ std::vector OBS_settings::getStreamSettings(StreamServiceId service bool isCategoryEnabled = !OBS_service::isStreamingOutputActive(serviceId); obs_service_t *currentService = OBS_service::getService(serviceId); - obs_data_t *settings = obs_service_get_settings(currentService); + OBSDataAutoRelease settings = obs_service_get_settings(currentService); std::vector streamSettings; SubCategory service; @@ -802,7 +802,6 @@ std::vector OBS_settings::getStreamSettings(StreamServiceId service streamSettings.push_back(serviceConfiguration); obs_properties_destroy(properties); - obs_data_release(settings); return streamSettings; } From cc332a3e00ce610ef16157c9822f06da5cd825b1 Mon Sep 17 00:00:00 2001 From: mhoyer-streamlabs Date: Thu, 8 Jan 2026 11:03:48 -0600 Subject: [PATCH 6/6] Use auto release for settings --- obs-studio-server/source/nodeobs_settings.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/obs-studio-server/source/nodeobs_settings.cpp b/obs-studio-server/source/nodeobs_settings.cpp index 0bf747359..5685947b5 100644 --- a/obs-studio-server/source/nodeobs_settings.cpp +++ b/obs-studio-server/source/nodeobs_settings.cpp @@ -802,7 +802,6 @@ std::vector OBS_settings::getStreamSettings(StreamServiceId service streamSettings.push_back(serviceConfiguration); obs_properties_destroy(properties); - obs_data_release(settings); return streamSettings; }