Opened 5 years ago
Closed 5 years ago
#5949 closed defect (fixed)
SimpleModelicaParser does stack overflow on huge arrays
| Reported by: | Adrian Pop | Owned by: | Martin Sjölund |
|---|---|---|---|
| Priority: | high | Milestone: | 1.16.0 |
| Component: | Parser | Version: | |
| Keywords: | Cc: |
Description (last modified by )
Basically it does diffModelicaFileListings on a file with a *HUGE* diagram annotation.
This needs to be rewritten somehow so that it doesn't blow up the stack:
elseif id==TokenId.LBRACE then (tokens, tree) := scan(tokens, tree, TokenId.LBRACE); (tokens, tree, b) := LA1(tokens, tree, {TokenId.RBRACE}); // Easier than checking First(expression), etc if not b then (tokens, tree) := function_arguments(tokens, tree); end if; (tokens, tree) := scan(tokens, tree, TokenId.RBRACE);
Attachments (1)
Change History (5)
by , 5 years ago
| Attachment: | BadClassDiagram.mo added |
|---|
comment:1 by , 5 years ago
comment:2 by , 5 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 5 years ago
The problem is that function_arguments is self recursive:
https://github.com/OpenModelica/OpenModelica/blob/master/OMCompiler/Compiler/Parsers/SimpleModelicaParser.mo#L1300
comment:4 by , 5 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.

Reported by AKIO NATORI via OpenModelica list.