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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-10-07 13:48:59 +0300
committerJeroen Bakker <jeroen@blender.org>2020-10-28 11:49:55 +0300
commitffb220590ea76bc279eeb3498776a360467125c1 (patch)
tree008625dd1377d77767a7e10a15ede540b739f961 /source
parent6b1042f45a587280cdeed167d941478cb39e40c7 (diff)
Fix T81226: Crash opening 64bit files with endian switching
Endian switching when loading 64bit blend files on a 64bit system was crashing as the endian switching is only applicable when loading on 32 bit systems. This crash goes back to 2.7x, it looks like this never worked all the way back to the first commit.
Diffstat (limited to 'source')
-rw-r--r--source/blender/makesdna/intern/dna_genfile.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/makesdna/intern/dna_genfile.c b/source/blender/makesdna/intern/dna_genfile.c
index cf7c201795e..5ee48641d5b 100644
--- a/source/blender/makesdna/intern/dna_genfile.c
+++ b/source/blender/makesdna/intern/dna_genfile.c
@@ -1356,8 +1356,12 @@ void DNA_struct_switch_endian(const SDNA *oldsdna, int oldSDNAnr, char *data)
else {
/* non-struct field type */
if (ispointer(name)) {
- if (oldsdna->pointer_size == 8) {
- BLI_endian_switch_int64_array((int64_t *)cur, old_name_array_len);
+ /* See readfile.c (#bh4_from_bh8 swap endian argument),
+ * this is only done when reducing the size of a pointer from 4 to 8. */
+ if (sizeof(void *) < 8) {
+ if (oldsdna->pointer_size == 8) {
+ BLI_endian_switch_int64_array((int64_t *)cur, old_name_array_len);
+ }
}
}
else {