Skip to content

Commit

Permalink
Write incomplete result-files, so it is possible to see the signals u…
Browse files Browse the repository at this point in the history
…ntil the error was triggered

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@21398 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Jul 3, 2014
1 parent 83e92eb commit cb80b9a
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 12 deletions.
7 changes: 7 additions & 0 deletions SimulationRuntime/c/simulation/simulation_runtime.cpp
Expand Up @@ -645,9 +645,13 @@ int callSolver(DATA* simData, string result_file_cstr, string init_initMethod,
long i;
long solverID = S_UNKNOWN;
const char* outVars = (outputVariablesAtEnd.size() == 0) ? NULL : outputVariablesAtEnd.c_str();
threadData_t *threadData = simData->threadData;

TRACE_PUSH

MMC_TRY_INTERNAL(mmc_jumper)
MMC_TRY_INTERNAL(globalJumpBuffer)

if(initializeResultData(simData, result_file_cstr, cpuTime))
{
TRACE_POP
Expand Down Expand Up @@ -691,6 +695,9 @@ int callSolver(DATA* simData, string result_file_cstr, string init_initMethod,
retVal = solver_main(simData, init_initMethod.c_str(), init_optiMethod.c_str(), init_file.c_str(), init_time, lambda_steps, solverID, outVars);
}

MMC_CATCH_INTERNAL(mmc_jumper)
MMC_CATCH_INTERNAL(globalJumpBuffer)

sim_result.free(&sim_result, simData);

TRACE_POP
Expand Down
16 changes: 14 additions & 2 deletions SimulationRuntime/c/util/read_matlab4.c
Expand Up @@ -35,6 +35,16 @@
#include <assert.h>
#include "read_matlab4.h"

extern const char *omc_mat_Aclass;

typedef struct {
uint32_t type;
uint32_t mrows;
uint32_t ncols;
uint32_t imagf;
uint32_t namelen;
} MHeader_t;

/* Make Visual Studio not complain about deprecated items */
#ifdef _MSC_VER
#define strdup _strdup
Expand Down Expand Up @@ -364,7 +374,8 @@ const char* omc_new_matlab4_reader(const char *filename, ModelicaMatReader *read
case 5: { /* "data_2" */
if(binTrans==1) {
reader->nrows = hdr.ncols;
if(reader->nrows < 2) return "Too few rows in data_2 matrix";
/* Allow empty matrix; it's not a complete file, but ok... */
/* if(reader->nrows < 2) return "Too few rows in data_2 matrix"; */
reader->nvar = hdr.mrows;
reader->var_offset = ftell(reader->file);
reader->vars = (double**) calloc(reader->nvar*2,sizeof(double*));
Expand All @@ -373,7 +384,8 @@ const char* omc_new_matlab4_reader(const char *filename, ModelicaMatReader *read
if(binTrans==0) {
unsigned int k,j;
reader->nrows = hdr.mrows;
if(reader->nrows < 2) return "Too few rows in data_2 matrix";
/* Allow empty matrix; it's not a complete file, but ok... */
/* if(reader->nrows < 2) return "Too few rows in data_2 matrix"; */
reader->nvar = hdr.ncols;
reader->var_offset = ftell(reader->file);
reader->vars = (double**) calloc(reader->nvar*2,sizeof(double*));
Expand Down
10 changes: 0 additions & 10 deletions SimulationRuntime/c/util/read_matlab4.h
Expand Up @@ -34,16 +34,6 @@
#include <stdio.h>
#include <stdint.h>

extern const char *omc_mat_Aclass;

typedef struct {
uint32_t type;
uint32_t mrows;
uint32_t ncols;
uint32_t imagf;
uint32_t namelen;
} MHeader_t;

typedef struct {
char *name,*descr;
int isParam;
Expand Down

0 comments on commit cb80b9a

Please sign in to comment.