From 352538c6280d8d9d5da119c14623c5f09b2034f5 Mon Sep 17 00:00:00 2001 From: bluebrother Date: Sat, 2 Feb 2008 21:34:39 +0000 Subject: [PATCH] Don't segfault upon opening the voice / talk creation window if the encoder setting is missing. This could happen if the configuration file is older and the user didn't re-save the settings. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16202 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/createvoicewindow.cpp | 19 ++++++++++++------- rbutil/rbutilqt/installtalkwindow.cpp | 17 ++++++++++++----- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/rbutil/rbutilqt/createvoicewindow.cpp b/rbutil/rbutilqt/createvoicewindow.cpp index dda0097b5..8e08ba3f2 100644 --- a/rbutil/rbutilqt/createvoicewindow.cpp +++ b/rbutil/rbutilqt/createvoicewindow.cpp @@ -87,15 +87,20 @@ void CreateVoiceWindow::setSettings(RbSettings* sett) ui.labelTtsProfile->setText(tr("Selected TTS Engine: %1").arg("Invalid TTS configuration!")); QString encoder = settings->curEncoder(); - EncBase* enc = getEncoder(encoder); - enc->setCfg(settings); - if(enc->configOk()) - ui.labelEncProfile->setText(tr("Selected Encoder: %1").arg(encoder)); + // only proceed if encoder setting is set + if(!encoder.isEmpty()) { + // FIXME: getEncoder CAN return a NULL pointer. Additional error + // checking is required or getEncoder should use the default engine + EncBase* enc = getEncoder(encoder); + enc->setCfg(settings); + if(enc->configOk()) + ui.labelEncProfile->setText(tr("Selected Encoder: %1").arg(encoder)); + else + ui.labelEncProfile->setText(tr("Selected Encoder: %1").arg("Invalid encoder configuration!")); + } else ui.labelEncProfile->setText(tr("Selected Encoder: %1").arg("Invalid encoder configuration!")); - - ui.wavtrimthreshold->setValue(settings->wavtrimTh()); - + ui.wavtrimthreshold->setValue(settings->wavtrimTh()); } diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp index f7202aae4..dfe2a84c1 100644 --- a/rbutil/rbutilqt/installtalkwindow.cpp +++ b/rbutil/rbutilqt/installtalkwindow.cpp @@ -119,13 +119,20 @@ void InstallTalkWindow::setSettings(RbSettings* sett) ui.labelTtsProfile->setText(tr("Selected TTS Engine: %1").arg("Invalid TTS configuration!")); QString encoder = settings->curEncoder(); - EncBase* enc = getEncoder(encoder); - enc->setCfg(settings); - if(enc->configOk()) - ui.labelEncProfile->setText(tr("Selected Encoder: %1").arg(encoder)); + // only proceed if encoder setting is set + if(!encoder.isEmpty()) { + // FIXME: getEncoder CAN return a NULL pointer. Additional error + // checking is required or getEncoder should use the default engine + EncBase* enc = getEncoder(encoder); + enc->setCfg(settings); + if(enc->configOk()) + ui.labelEncProfile->setText(tr("Selected Encoder: %1").arg(encoder)); + else + ui.labelEncProfile->setText(tr("Selected Encoder: %1").arg("Invalid encoder configuration!")); + } else ui.labelEncProfile->setText(tr("Selected Encoder: %1").arg("Invalid encoder configuration!")); - + setTalkFolder(settings->lastTalkedFolder()); } -- 2.11.4.GIT