Skip to content

Commit

Permalink
Revert r19001 (missing CodegenC.tpl changes and changes to the jmpbuf…
Browse files Browse the repository at this point in the history
… structure)

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@19008 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Feb 6, 2014
1 parent 07a4d15 commit 8c34e0e
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
8 changes: 5 additions & 3 deletions SimulationRuntime/c/util/division.c
Expand Up @@ -36,7 +36,7 @@
#include "division.h"
#include "omc_error.h"

modelica_real division_error_equation_time(modelica_real b, const char *msg, const int *indexes, modelica_real time, modelica_boolean noThrow, jmp_buf simjmpBuffer)
modelica_real division_error_equation_time(modelica_real b, const char *msg, const int *indexes, modelica_real time, modelica_boolean noThrow)
{
if(noThrow){
warningStreamPrintWithEquationIndexes(LOG_UTIL, 0, indexes, "solver will try to handle division by zero at time %.16g: %s", time, msg);
Expand All @@ -46,7 +46,7 @@ modelica_real division_error_equation_time(modelica_real b, const char *msg, con
return b;
}

modelica_real division_error_time(modelica_real b, const char* division_str, modelica_real time, const char* file, long line, modelica_boolean noThrow, jmp_buf simJmpBuffer)
modelica_real division_error_time(modelica_real b, const char* division_str, modelica_real time, const char* file, long line, modelica_boolean noThrow)
{
if(noThrow){
warningStreamPrint(LOG_UTIL, 0,
Expand All @@ -58,7 +58,9 @@ modelica_real division_error_time(modelica_real b, const char* division_str, mod
"division by zero in partial equation: %s\n"
"at Time=%f\n"
"[line] %ld | [file] %s", division_str, time, line, file);
longjmp(simJmpBuffer, 1);
#ifndef __APPLE_CC__
throwStreamPrint("division by zero");
#endif
}
return b;
}
Expand Down
6 changes: 3 additions & 3 deletions SimulationRuntime/c/util/division.h
Expand Up @@ -39,15 +39,15 @@
#ifdef CHECK_NAN
#define DIVISION(a,b,c) (((b) != 0) ? (isnan_error(((a) / (b)), c, __FILE__, __LINE__)) : ((a) / division_error(b, c, __FILE__, __LINE__)))
#else
#define DIVISION(a,b,c) (((b) != 0) ? ((a) / (b)) : ((a==0)?a:((a) / division_error_time(b, c, time, __FILE__, __LINE__,data->simulationInfo.noThrowDivZero?1:0, simulationJmpbuf))))
#define DIVISION(a,b,c) (((b) != 0) ? ((a) / (b)) : ((a==0)?a:((a) / division_error_time(b, c, time, __FILE__, __LINE__,data->simulationInfo.noThrowDivZero?1:0))))
#endif

#define DIVISION_SIM(a,b,msg,equation) (((b) != 0) ? ((a) / (b)) : ((a==0)?a:((a) / division_error_equation_time(b, msg, equation, time, data->simulationInfo.noThrowDivZero?1:0))))

#define DIVISIONNOTIME(a,b,c) (((b) != 0) ? ((a) / (b)) : ((a==0)?a:((a) / division_error(b, c, __FILE__, __LINE__))))

modelica_real division_error_equation_time(modelica_real b, const char *division_str, const int *indexes, modelica_real time, modelica_boolean noThrow, jmp_buf simJmpBuffer);
modelica_real division_error_time(modelica_real b, const char* division_str, modelica_real time, const char* file, long line, modelica_boolean noThrow, jmp_buf simJmpBuffer);
modelica_real division_error_equation_time(modelica_real b, const char *division_str, const int *indexes, modelica_real time, modelica_boolean noThrow);
modelica_real division_error_time(modelica_real b, const char* division_str, modelica_real time, const char* file, long line, modelica_boolean noThrow);
modelica_real division_error(modelica_real b, const char* division_str, const char* file, long line);
modelica_real isnan_error(modelica_real b, const char* division_str, const char* file, long line);

Expand Down

0 comments on commit 8c34e0e

Please sign in to comment.