From 9cdd847445f50fb1add0b9beab3f7395731ba57f Mon Sep 17 00:00:00 2001 From: Richard Stanway Date: Wed, 5 Apr 2023 22:13:23 +0200 Subject: [PATCH] UI: Fix incorrect use of QT_TO_UTF8 in SpeakerLayoutChanged The string is immediately destroyed after use, so taking a pointer to it ends up pointing to invalid memory. Let's avoid using QT_TO_UTF8 here. --- UI/window-basic-settings.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 5cf14fef6..2cdc8aaf5 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -4671,17 +4671,20 @@ void OBSBasicSettings::SpeakerLayoutChanged(int idx) */ PopulateSimpleBitrates(ui->simpleOutputABitrate, isOpus); - const char *encoder_id = QT_TO_UTF8( - ui->advOutAEncoder->currentData().toString()); - QString rec_encoder_id = - ui->advOutRecAEncoder->currentData().toString(); + string stream_encoder_id = ui->advOutAEncoder->currentData() + .toString() + .toStdString(); + string record_encoder_id = ui->advOutRecAEncoder->currentData() + .toString() + .toStdString(); PopulateAdvancedBitrates( {ui->advOutTrack1Bitrate, ui->advOutTrack2Bitrate, ui->advOutTrack3Bitrate, ui->advOutTrack4Bitrate, ui->advOutTrack5Bitrate, ui->advOutTrack6Bitrate}, - encoder_id, - rec_encoder_id == "none" ? encoder_id - : QT_TO_UTF8(rec_encoder_id)); + stream_encoder_id.c_str(), + record_encoder_id == "none" + ? stream_encoder_id.c_str() + : record_encoder_id.c_str()); } else { /* * Reset audio bitrate for simple and adv mode, update list of