Skip to content

Input the specified string will cause a crash #188

@lgkiki

Description

@lgkiki

input this string, likes:

"\\\\frac{100 \\\\times (100 + 1)}{2} = 5050"

in master branch , use likes:

int main(int argc, char* argv[]) {

    LaTeX::init();
    std::string originStr = "\\\\frac{100 \\\\times (100 + 1)}{2} = 5050";
    std::wstring s = utf82wide(originStr);
    int result = 0;
    LaTeX::parse(s, 2000, 52.0, 10.0, 4278190080);
    LaTeX::release();
    return result;
}

run exe file, will be crash, backtrace likes:

#0  0x00005555555b0a1a in std::vector<std::shared_ptr<tex::Atom>, std::allocator<std::shared_ptr<tex::Atom> > >::push_back(std::shared_ptr<tex::Atom> const&) (this=0xbfffffffbab84, __x=std::shared_ptr<tex::Atom> (use count 1, weak count 0) = {...})
    at /usr/include/c++/11/bits/stl_vector.h:1189
#1  0x00005555555e9e19 in tex::ArrayFormula::addCol() (this=0x7fffffffd0e0) at /home/xxx/MicroTeX-master/src/core/formula.cpp:193
#2  0x00005555555ea0f8 in tex::ArrayFormula::addRow() (this=0x7fffffffd0e0) at /home/xxx/MicroTeX-master/src/core/formula.cpp:216
#3  0x000055555568fee5 in tex::TeXParser::addRow() const (this=0x7fffffffd3c0) at /home/xxx/MicroTeX-master/src/core/parser.cpp:142
#4  0x000055555561d4a1 in tex::macro_cr(tex::TeXParser&, std::vector<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >&) (tp=..., args=std::vector of length 12, capacity 12 = {...}) at /home/xxx/MicroTeX-master/src/core/macro_impl.h:499
#5  0x000055555561d6a8 in tex::macro_backslashcr(tex::TeXParser&, std::vector<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >&) (tp=..., args=std::vector of length 12, capacity 12 = {...}) at /home/xxx/MicroTeX-master/src/core/macro_impl.h:520
#6  0x00005555555ffe12 in tex::PreDefMacro::invoke(tex::TeXParser&, std::vector<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >&) (this=0x55555585a4e0, tp=..., args=std::vector of length 12, capacity 12 = {...})
    at /home/xxx/MicroTeX-master/src/core/macro.cpp:153
#7  0x0000555555692371 in tex::TeXParser::processCommands(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, tex::MacroInfo*) (this=0x7fffffffd3c0, cmd=L"\\", mac=0x55555585a4e0)
    at /home/xxx/MicroTeX-master/src/core/parser.cpp:520
#8  0x0000555555691e95 in tex::TeXParser::processEscape() (this=0x7fffffffd3c0)
    at /home/xxx/MicroTeX-master/src/core/parser.cpp:484
#9  0x000055555569488e in tex::TeXParser::parse() (this=0x7fffffffd3c0) at /home/xxx/MicroTeX-master/src/core/parser.cpp:840
#10 0x0000555555692c46 in tex::TeXParser::getArgument() (this=0x7fffffffd3c0) at /home/xxx/MicroTeX-master/src/core/parser.cpp:605
#11 0x000055555569495b in tex::TeXParser::parse() (this=0x7fffffffd3c0) at /home/xxx/MicroTeX-master/src/core/parser.cpp:848

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions