[Bf-blender-cvs] [607e3d3b88e] blender-v2.83-release: Fix T90417: font loading creates duplicate ID names

Campbell Barton noreply at git.blender.org
Mon Aug 16 10:02:39 CEST 2021


Commit: 607e3d3b88ecd45263a6a1c430d8430c1d157e10
Author: Campbell Barton
Date:   Wed Aug 4 12:57:20 2021 +1000
Branches: blender-v2.83-release
https://developer.blender.org/rB607e3d3b88ecd45263a6a1c430d8430c1d157e10

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_280.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 702ffd09e0f..adad21b99c3 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -36,7 +36,7 @@
 
 /* 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 1c619297064..9379900ce8c 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -293,13 +293,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->name, filepath, sizeof(vfont->name));
 
       /* if autopack is on store the packedfile in de font structure */
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index f141050f6b7..1227b0d0e79 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -5087,6 +5087,11 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
     }
   }
 
+  if (!MAIN_VERSION_ATLEAST(bmain, 283, 21)) {
+    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