From 0f2e47c4adc21d75f5e99819c91c0f851b76a3ad Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Fri, 23 Apr 2010 11:46:24 +0000 Subject: [PATCH] Fix bug #6664: InsetInfo: lyxrc information broken. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34278 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/InsetInfo.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/insets/InsetInfo.cpp b/src/insets/InsetInfo.cpp index a15270fa3a..95cecc3db6 100644 --- a/src/insets/InsetInfo.cpp +++ b/src/insets/InsetInfo.cpp @@ -309,10 +309,26 @@ void InsetInfo::updateInfo() } case LYXRC_INFO: { ostringstream oss; + if (name_.empty()) { + setText(_("undefined")); + break; + } lyxrc.write(oss, true, name_); string result = oss.str(); - // remove leading \\name - result = result.substr(name_.size() + 2); + if (result.size() < 2) { + setText(_("undefined")); + break; + } + string::size_type loc = result.rfind("\n", result.size() - 2); + loc = loc == string::npos ? 0 : loc + 1; + if (result.size() < loc + name_.size() + 1 + || result.substr(loc + 1, name_.size()) != name_) { + setText(_("undefined")); + break; + } + // remove leading comments and \\name and space + result = result.substr(loc + name_.size() + 2); + // remove \n and "" result = rtrim(result, "\n"); result = trim(result, "\"");