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:
authorSybren A. Stüvel <sybren@blender.org>2021-01-14 13:42:22 +0300
committerSybren A. Stüvel <sybren@blender.org>2021-01-14 13:42:22 +0300
commit8cdd701b4590f4f0dc95eedfaff17570aa53ffa0 (patch)
tree548a8f044344996de8b98ea6139d0eaaefe8af82
parent9e038a2c6ba467c99ac6950791f1654e8810ea84 (diff)
parent442b6e5e09510e938dba558bed5bd125ffe4a0c1 (diff)
Merge remote-tracking branch 'origin/blender-v2.92-release'
-rw-r--r--release/scripts/modules/bl_keymap_utils/io.py8
-rw-r--r--source/blender/modifiers/intern/MOD_meshcache_mdd.c22
-rw-r--r--source/blender/modifiers/intern/MOD_meshcache_pc2.c11
3 files changed, 33 insertions, 8 deletions
diff --git a/release/scripts/modules/bl_keymap_utils/io.py b/release/scripts/modules/bl_keymap_utils/io.py
index 645a145f994..7adcd799c0f 100644
--- a/release/scripts/modules/bl_keymap_utils/io.py
+++ b/release/scripts/modules/bl_keymap_utils/io.py
@@ -74,9 +74,11 @@ def kmi_args_as_data(kmi):
s.append(f"\"key_modifier\": '{kmi.key_modifier}'")
if kmi.repeat:
- if kmi.map_type == 'KEYBOARD':
- if kmi.value in {'PRESS', 'ANY'}:
- s.append("\"repeat\": True")
+ if (
+ (kmi.map_type == 'KEYBOARD' and kmi.value in {'PRESS', 'ANY'}) or
+ (kmi.map_type == 'TEXTINPUT')
+ ):
+ s.append("\"repeat\": True")
return "{" + ", ".join(s) + "}"
diff --git a/source/blender/modifiers/intern/MOD_meshcache_mdd.c b/source/blender/modifiers/intern/MOD_meshcache_mdd.c
index d216c14ab43..22e49434f7d 100644
--- a/source/blender/modifiers/intern/MOD_meshcache_mdd.c
+++ b/source/blender/modifiers/intern/MOD_meshcache_mdd.c
@@ -110,17 +110,26 @@ static bool meshcache_read_mdd_range_from_time(FILE *fp,
return false;
}
+ size_t num_frames_read = 0;
+ size_t num_frames_expect = mdd_head.frame_tot;
+ errno = 0;
for (i = 0; i < mdd_head.frame_tot; i++) {
- fread(&f_time, sizeof(float), 1, fp);
+ num_frames_read += fread(&f_time, sizeof(float), 1, fp);
#ifdef __LITTLE_ENDIAN__
BLI_endian_switch_float(&f_time);
#endif
if (f_time >= time) {
+ num_frames_expect = i + 1;
break;
}
f_time_prev = f_time;
}
+ if (num_frames_read != num_frames_expect) {
+ *err_str = errno ? strerror(errno) : "Timestamp read failed";
+ return false;
+ }
+
if (i == mdd_head.frame_tot) {
frame = (float)(mdd_head.frame_tot - 1);
}
@@ -165,12 +174,14 @@ bool MOD_meshcache_read_mdd_index(FILE *fp,
return false;
}
+ size_t num_verts_read = 0;
+ errno = 0;
if (factor >= 1.0f) {
#if 1
float *vco = *vertexCos;
uint i;
for (i = mdd_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 __LITTLE_ENDIAN__
BLI_endian_switch_float(vco + 0);
@@ -195,7 +206,7 @@ bool MOD_meshcache_read_mdd_index(FILE *fp,
uint i;
for (i = mdd_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 __LITTLE_ENDIAN__
BLI_endian_switch_float(tvec + 0);
@@ -209,6 +220,11 @@ bool MOD_meshcache_read_mdd_index(FILE *fp,
}
}
+ if (num_verts_read != mdd_head.verts_tot) {
+ *err_str = errno ? strerror(errno) : "Vertex coordinate read failed";
+ return false;
+ }
+
return true;
}
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;
}