X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FMathFactory.cpp;h=79ae676fc39b3ddc3d583149fd7d306f41e6d568;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=478d22adb013371b888d57ad90e4bdb14b0106af;hpb=1b7dea5c2fa83efc80f056aafc8f5d8b4551daa1;p=lyx.git diff --git a/src/mathed/MathFactory.cpp b/src/mathed/MathFactory.cpp index 478d22adb0..79ae676fc3 100644 --- a/src/mathed/MathFactory.cpp +++ b/src/mathed/MathFactory.cpp @@ -19,6 +19,7 @@ #include "InsetMathCancel.h" #include "InsetMathCancelto.h" #include "InsetMathCases.h" +#include "InsetMathClass.h" #include "InsetMathColor.h" #include "InsetMathDecoration.h" #include "InsetMathDots.h" @@ -73,6 +74,7 @@ #include "LyX.h" // use_gui #include "OutputParams.h" +#include using namespace std; using namespace lyx::support; @@ -147,6 +149,8 @@ void initSymbols() } ifstream fs(filename.toFilesystemEncoding().c_str()); + // limit the size of strings we read to avoid memory problems + fs >> setw(65636); string line; bool skip = false; while (getline(fs, line)) { @@ -158,6 +162,8 @@ void initSymbols() // special case of iffont/else/endif if (line.size() >= 7 && line.substr(0, 6) == "iffont") { istringstream is(line); + // limit the size of strings we read to avoid memory problems + is >> setw(65636); string tmp; is >> tmp; is >> tmp; @@ -187,7 +193,7 @@ void initSymbols() string extra; string xmlname; bool hidden = false; - is >> macro >> requires; + is >> setw(65536) >> macro >> requires; if ((is >> xmlname)) { extra = requires; if (!(is >> requires)) @@ -458,6 +464,8 @@ MathAtom createInsetMath(docstring const & s, Buffer * buf) return MathAtom(new InsetMathDecoration(buf, l)); if (inset == "space") return MathAtom(new InsetMathSpace(to_ascii(l->name), "")); + if (inset == "class") + return MathAtom(new InsetMathClass(buf, string_to_class(s))); if (inset == "dots") return MathAtom(new InsetMathDots(l)); if (inset == "mbox") @@ -494,8 +502,6 @@ MathAtom createInsetMath(docstring const & s, Buffer * buf) return MathAtom(new InsetMathMakebox(buf, true)); if (s == "makebox") return MathAtom(new InsetMathMakebox(buf, false)); - if (s == "kern") - return MathAtom(new InsetMathKern); if (s.substr(0, 8) == "xymatrix") { char spacing_code = '\0'; Length spacing; @@ -662,7 +668,6 @@ MathAtom createInsetMath(docstring const & s, Buffer * buf) return MathAtom(new InsetMathSpecialChar(s)); if (s == " ") return MathAtom(new InsetMathSpace(" ", "")); - if (s == "regexp") return MathAtom(new InsetMathHull(buf, hullRegexp)); @@ -689,7 +694,7 @@ bool createInsetMath_fromDialogStr(docstring const & str, MathData & ar) InsetSpace::string2params(to_utf8(str), isp); InsetSpace is(isp); odocstringstream ods; - otexstream os(ods, false); + otexstream os(ods); Encoding const * const ascii = encodings.fromLyXName("ascii"); OutputParams op(ascii); is.latex(os, op);