diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2015-11-10 18:20:28 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2015-11-10 18:21:09 +0300 |
commit | d9c89f175f945e5f7fb40ddd3326ceeca21ad366 (patch) | |
tree | 199de6098222eec072cc89d29c4685c4c8bd8c03 /source/blender/blenkernel/intern/library.c | |
parent | 3b38fd6bf92cd9abc502346198e54191a247e860 (diff) |
Cleanup: ID usercount: moar checks and factorization. No change in behavior expected.
Diffstat (limited to 'source/blender/blenkernel/intern/library.c')
-rw-r--r-- | source/blender/blenkernel/intern/library.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index b76323bef31..1dff424b6cc 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -163,8 +163,13 @@ void id_lib_extern(ID *id) void id_us_ensure_real(ID *id) { if (id) { - if (ID_REAL_USERS(id) <= 0) { - id->us = MAX2(id->us, 0) + 1; + const int limit = ID_FAKE_USERS(id); + if (id->us <= limit) { + if (id->us < limit) { + printf("ID user count error: %s (from '%s')\n", id->name, id->lib ? id->lib->filepath : "[Main]"); + BLI_assert(0); + } + id->us = limit + 1; } } } @@ -172,6 +177,7 @@ void id_us_ensure_real(ID *id) void id_us_plus(ID *id) { if (id) { + BLI_assert(id->us >= 0); id->us++; if (id->flag & LIB_INDIRECT) { id->flag -= LIB_INDIRECT; @@ -184,7 +190,7 @@ void id_us_plus(ID *id) void id_us_min(ID *id) { if (id) { - const int limit = (id->flag & LIB_FAKEUSER) ? 1 : 0; + const int limit = ID_FAKE_USERS(id); if (id->us <= limit) { printf("ID user decrement error: %s (from '%s')\n", id->name, id->lib ? id->lib->filepath : "[Main]"); BLI_assert(0); |