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:
authorBastien Montagne <bastien@blender.org>2020-11-23 13:56:40 +0300
committerBastien Montagne <bastien@blender.org>2020-11-23 13:56:40 +0300
commit64513df8b63a73ddea9015aa133d321fe1f062b0 (patch)
treefd8efd6f46428243c8b7918f63e4ed109c51eb18 /source/blender/blenkernel/intern/text.c
parent401612b8e148c3533f61a170c5189cf3d50e7bc1 (diff)
Fix T82849: Assert When Unlinking "Edit Source" Text Data-block.
Simplify and sanitize handling of usercounts for Text IDs generated trhough `BKE_text_load_ex`.
Diffstat (limited to 'source/blender/blenkernel/intern/text.c')
-rw-r--r--source/blender/blenkernel/intern/text.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c
index 6f4ac4c44a0..93795af7cd7 100644
--- a/source/blender/blenkernel/intern/text.c
+++ b/source/blender/blenkernel/intern/text.c
@@ -459,6 +459,12 @@ bool BKE_text_reload(Text *text)
return true;
}
+/** Load a text file.
+ *
+ * \param is_internal If \a true, this text data-block only exists in memory, not as a file on
+ * disk.
+ *
+ * \note: text data-blocks have no user by default, only the 'real user' flag. */
Text *BKE_text_load_ex(Main *bmain, const char *file, const char *relpath, const bool is_internal)
{
unsigned char *buffer;
@@ -478,8 +484,9 @@ Text *BKE_text_load_ex(Main *bmain, const char *file, const char *relpath, const
}
ta = BKE_libblock_alloc(bmain, ID_TXT, BLI_path_basename(filepath_abs), 0);
- /* Texts always have 'real' user (see also read code). */
+ /* Texts have no user by default... Only the 'real' user flag. */
id_us_ensure_real(&ta->id);
+ id_us_min(&ta->id);
BLI_listbase_clear(&ta->lines);
ta->curl = ta->sell = NULL;
@@ -511,6 +518,9 @@ Text *BKE_text_load_ex(Main *bmain, const char *file, const char *relpath, const
return ta;
}
+/** Load a text file.
+ *
+ * \note: text data-blocks have no user by default, only the 'real user' flag. */
Text *BKE_text_load(Main *bmain, const char *file, const char *relpath)
{
return BKE_text_load_ex(bmain, file, relpath, false);