Skip to content

Commit

Permalink
Fix checking return value of fread
Browse files Browse the repository at this point in the history
  • Loading branch information
tbeu committed Jun 14, 2019
1 parent 4ad3a6e commit 3c04063
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions src/mat4.c
Original file line number Diff line number Diff line change
Expand Up @@ -756,7 +756,7 @@ Mat_VarReadNextInfo4(mat_t *mat)
int M,O,data_type,class_type;
mat_int32_t tmp;
long nBytes;
size_t err;
size_t readresult;
matvar_t *matvar = NULL;
union {
mat_uint32_t u;
Expand All @@ -768,8 +768,8 @@ Mat_VarReadNextInfo4(mat_t *mat)
else if ( NULL == (matvar = Mat_VarCalloc()) )
return NULL;

err = fread(&tmp,sizeof(int),1,(FILE*)mat->fp);
if ( !err ) {
readresult = fread(&tmp,sizeof(int),1,(FILE*)mat->fp);
if ( 1 != readresult ) {
Mat_VarFree(matvar);
return NULL;
}
Expand Down Expand Up @@ -855,34 +855,34 @@ Mat_VarReadNextInfo4(mat_t *mat)
Mat_VarFree(matvar);
return NULL;
}
err = fread(&tmp,sizeof(int),1,(FILE*)mat->fp);
readresult = fread(&tmp,sizeof(int),1,(FILE*)mat->fp);
if ( mat->byteswap )
Mat_int32Swap(&tmp);
matvar->dims[0] = tmp;
if ( !err ) {
if ( 1 != readresult ) {
Mat_VarFree(matvar);
return NULL;
}
err = fread(&tmp,sizeof(int),1,(FILE*)mat->fp);
readresult = fread(&tmp,sizeof(int),1,(FILE*)mat->fp);
if ( mat->byteswap )
Mat_int32Swap(&tmp);
matvar->dims[1] = tmp;
if ( !err ) {
if ( 1 != readresult ) {
Mat_VarFree(matvar);
return NULL;
}

err = fread(&(matvar->isComplex),sizeof(int),1,(FILE*)mat->fp);
if ( !err ) {
readresult = fread(&(matvar->isComplex),sizeof(int),1,(FILE*)mat->fp);
if ( 1 != readresult ) {
Mat_VarFree(matvar);
return NULL;
}
if ( matvar->isComplex && MAT_C_CHAR == matvar->class_type ) {
Mat_VarFree(matvar);
return NULL;
}
err = fread(&tmp,sizeof(int),1,(FILE*)mat->fp);
if ( !err ) {
readresult = fread(&tmp,sizeof(int),1,(FILE*)mat->fp);
if ( 1 != readresult ) {
Mat_VarFree(matvar);
return NULL;
}
Expand All @@ -898,8 +898,8 @@ Mat_VarReadNextInfo4(mat_t *mat)
Mat_VarFree(matvar);
return NULL;
}
err = fread(matvar->name,1,tmp,(FILE*)mat->fp);
if ( !err ) {
readresult = fread(matvar->name,1,tmp,(FILE*)mat->fp);
if ( tmp != readresult ) {
Mat_VarFree(matvar);
return NULL;
}
Expand All @@ -911,6 +911,7 @@ Mat_VarReadNextInfo4(mat_t *mat)
return NULL;
}
{
int err;
size_t tmp2 = Mat_SizeOf(matvar->data_type);
if ( matvar->isComplex )
tmp2 *= 2;
Expand Down

0 comments on commit 3c04063

Please sign in to comment.