]> git.lyx.org Git - lyx.git/commitdiff
Fix bug #6664: InsetInfo: lyxrc information broken.
authorVincent van Ravesteijn <vfr@lyx.org>
Fri, 23 Apr 2010 11:46:24 +0000 (11:46 +0000)
committerVincent van Ravesteijn <vfr@lyx.org>
Fri, 23 Apr 2010 11:46:24 +0000 (11:46 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34278 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/InsetInfo.cpp

index a15270fa3a6acf585a72cdaa22fa5860493ebcb8..95cecc3db6941a0e61c1c1747c7858a859778fbf 100644 (file)
@@ -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, "\"");