Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/modifiers/intern/MOD_meshcache_pc2.c')
-rw-r--r--source/blender/modifiers/intern/MOD_meshcache_pc2.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/modifiers/intern/MOD_meshcache_pc2.c b/source/blender/modifiers/intern/MOD_meshcache_pc2.c
index 0ef9f26f1d7..ea8cc334dd9 100644
--- a/source/blender/modifiers/intern/MOD_meshcache_pc2.c
+++ b/source/blender/modifiers/intern/MOD_meshcache_pc2.c
@@ -151,11 +151,13 @@ bool MOD_meshcache_read_pc2_index(FILE *fp,
return false;
}
+ size_t num_verts_read = 0;
+ errno = 0;
if (factor >= 1.0f) {
float *vco = *vertexCos;
uint i;
for (i = pc2_head.verts_tot; i != 0; i--, vco += 3) {
- fread(vco, sizeof(float[3]), 1, fp);
+ num_verts_read += fread(vco, sizeof(float[3]), 1, fp);
#ifdef __BIG_ENDIAN__
BLI_endian_switch_float(vco + 0);
@@ -170,7 +172,7 @@ bool MOD_meshcache_read_pc2_index(FILE *fp,
uint i;
for (i = pc2_head.verts_tot; i != 0; i--, vco += 3) {
float tvec[3];
- fread(tvec, sizeof(float[3]), 1, fp);
+ num_verts_read += fread(tvec, sizeof(float[3]), 1, fp);
#ifdef __BIG_ENDIAN__
BLI_endian_switch_float(tvec + 0);
@@ -184,6 +186,11 @@ bool MOD_meshcache_read_pc2_index(FILE *fp,
}
}
+ if (num_verts_read != pc2_head.verts_tot) {
+ *err_str = errno ? strerror(errno) : "Vertex coordinate read failed";
+ return false;
+ }
+
return true;
}