Skip to content

Commit

Permalink
clang analyzer does not like reasoning about struct pointer member va…
Browse files Browse the repository at this point in the history
…riables, so fix false positive

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@19819 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Mar 27, 2014
1 parent 5268a63 commit 3af86b8
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions SimulationRuntime/c/util/read_matlab4.c
Expand Up @@ -480,40 +480,41 @@ int omc_matlab4_read_all_vals(ModelicaMatReader *reader)
int done = reader->readAll;
int i,j;
double *tmp;
if (reader->nvar == 0 || reader->nrows == 0) {
int nrows = reader->nrows, nvar = reader->nvar;
if (nvar == 0 || nrows == 0) {
return 1;
}
for (i=0; i<2*reader->nvar; i++) {
for (i=0; i<2*nvar; i++) {
if (reader->vars[i] == 0) done = 0;
}
if (done) {
reader->readAll = 1;
return 0;
}
tmp = (double*) malloc(2*reader->nvar*reader->nrows*sizeof(double));
tmp = (double*) malloc(2*nvar*nrows*sizeof(double));
if (!tmp) {
return 1;
}
fseek(reader->file, reader->var_offset, SEEK_SET);
if (reader->nvar*reader->nrows != fread(tmp, reader->doublePrecision==1 ? sizeof(double) : sizeof(float), reader->nvar*reader->nrows, reader->file)) {
if (nvar*reader->nrows != fread(tmp, reader->doublePrecision==1 ? sizeof(double) : sizeof(float), nvar*nrows, reader->file)) {
free(tmp);
return 1;
}
if(reader->doublePrecision != 1) {
for (i=reader->nvar*reader->nrows-1; i>=0; i--) {
for (i=nvar*nrows-1; i>=0; i--) {
tmp[i] = ((float*)tmp)[i];
}
}
matrix_transpose(tmp,reader->nvar,reader->nrows);
matrix_transpose(tmp,nvar,nrows);
/* Negative aliases */
for (i=0; i<reader->nrows*reader->nvar; i++) {
tmp[reader->nrows*reader->nvar + i] = -tmp[i];
for (i=0; i<nrows*nvar; i++) {
tmp[nrows*nvar + i] = -tmp[i];
}
/* Setup all the pointers */
for (i=0; i<2*reader->nvar; i++) {
for (i=0; i<2*nvar; i++) {
if (!reader->vars[i]) {
reader->vars[i] = (double*) malloc(reader->nrows*sizeof(double));
memcpy(reader->vars[i], tmp + i*reader->nrows, reader->nrows*sizeof(double));
reader->vars[i] = (double*) malloc(nrows*sizeof(double));
memcpy(reader->vars[i], tmp + i*nrows, nrows*sizeof(double));
}
}
free(tmp);
Expand Down

0 comments on commit 3af86b8

Please sign in to comment.