Opened 11 years ago
Closed 11 years ago
#3256 closed defect (fixed)
Memory leak in ModelicaSimulationError?
| Reported by: | Rüdiger Franke | Owned by: | Rüdiger Franke | 
|---|---|---|---|
| Priority: | critical | Milestone: | 1.9.3 | 
| Component: | Cpp Run-time | Version: | trunk | 
| Keywords: | Cc: | Nils Menager, Volker Waurich, Niklas Worschech, Martin Flehmig | 
Description
r25329 (re-)commits the code:
class ModelicaSimulationError : public std::runtime_error { public: ModelicaSimulationError(SIMULATION_ERROR error_id, const std::string& error_info) : runtime_error(strdup(error_info.c_str())) , _error_id(error_id) { }
Who frees the memory allocated with strdup?
Change History (5)
comment:1 by , 11 years ago
| Owner: | changed from to | 
|---|---|
| Status: | new → assigned | 
comment:2 by , 11 years ago
| Cc: | added | 
|---|
comment:4 by , 11 years ago
| Owner: | changed from to | 
|---|
comment:5 by , 11 years ago
| Resolution: | → fixed | 
|---|---|
| Status: | assigned → closed | 
I think the overloaded what() method was the problem. It created the message in a local variable and returned a pointer to it. r25356 creates the message during construction instead, exploiting its storage in std::runtime_error.
  Note:
 See   TracTickets
 for help on using tickets.
    

I remember I added the strdup because sometimes crashed on throw.
You can try to remove it and see which models fail and why.
The revision in question: r24674.