diff options
author | Sybren A. Stüvel <sybren@blender.org> | 2021-01-14 13:42:22 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@blender.org> | 2021-01-14 13:42:22 +0300 |
commit | 8cdd701b4590f4f0dc95eedfaff17570aa53ffa0 (patch) | |
tree | 548a8f044344996de8b98ea6139d0eaaefe8af82 | |
parent | 9e038a2c6ba467c99ac6950791f1654e8810ea84 (diff) | |
parent | 442b6e5e09510e938dba558bed5bd125ffe4a0c1 (diff) |
Merge remote-tracking branch 'origin/blender-v2.92-release'
-rw-r--r-- | release/scripts/modules/bl_keymap_utils/io.py | 8 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_meshcache_mdd.c | 22 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_meshcache_pc2.c | 11 |
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; } |