[Bf-blender-cvs] [2bb38f30228] blender-v2.93-release: Fix T90417: font loading creates duplicate ID names
Campbell Barton
noreply at git.blender.org
Mon Aug 9 08:42:32 CEST 2021
Commit: 2bb38f302287718a357e995016d68534fdae932e
Author: Campbell Barton
Date: Wed Aug 4 12:57:20 2021 +1000
Branches: blender-v2.93-release
https://developer.blender.org/rB2bb38f302287718a357e995016d68534fdae932e
Fix T90417: font loading creates duplicate ID names
Also repair any errors in existing files.
Error from e0dd3fe5872ba37ff188e292b80b46fcf8df413c.
===================================================================
M source/blender/blenkernel/BKE_blender_version.h
M source/blender/blenkernel/intern/font.c
M source/blender/blenloader/intern/versioning_290.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 0704d4d72ca..de9a174195f 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -39,7 +39,7 @@ extern "C" {
/* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION
-#define BLENDER_FILE_SUBVERSION 20
+#define BLENDER_FILE_SUBVERSION 21
/* Minimum Blender version that supports reading file written with the current
* version. Older Blender versions will test this and show a warning if the file
diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
index 92cc3c763b6..9ec4ef777c1 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -337,13 +337,9 @@ VFont *BKE_vfont_load(Main *bmain, const char *filepath)
vfd = BLI_vfontdata_from_freetypefont(pf);
if (vfd) {
- vfont = BKE_libblock_alloc(bmain, ID_VF, filename, 0);
+ /* If there's a font name, use it for the ID name. */
+ vfont = BKE_libblock_alloc(bmain, ID_VF, vfd->name[0] ? vfd->name : filename, 0);
vfont->data = vfd;
-
- /* if there's a font name, use it for the ID name */
- if (vfd->name[0] != '\0') {
- BLI_strncpy(vfont->id.name + 2, vfd->name, sizeof(vfont->id.name) - 2);
- }
BLI_strncpy(vfont->filepath, filepath, sizeof(vfont->filepath));
/* if autopack is on store the packedfile in de font structure */
diff --git a/source/blender/blenloader/intern/versioning_290.c b/source/blender/blenloader/intern/versioning_290.c
index 565e62158ff..7a872ff31b7 100644
--- a/source/blender/blenloader/intern/versioning_290.c
+++ b/source/blender/blenloader/intern/versioning_290.c
@@ -2087,6 +2087,11 @@ void blo_do_versions_290(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
+ if (!MAIN_VERSION_ATLEAST(bmain, 300, 20)) {
+ ListBase *lb = which_libbase(bmain, ID_VF);
+ BKE_main_id_repair_duplicate_names_listbase(lb);
+ }
+
/**
* Versioning code until next subversion bump goes here.
*
More information about the Bf-blender-cvs
mailing list