Commit: 69d710187d5ae5e5e8b54761187ef8770f3fbb00
Author: Antonioya
Date:   Thu Aug 9 20:48:05 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB69d710187d5ae5e5e8b54761187ef8770f3fbb00

Fix unreported assert error when change instance modifier

Doing very fast change in the number of instances soemtimes get an error of 
duplicate ghash entry.

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

M       source/blender/draw/engines/gpencil/gpencil_draw_utils.c

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c 
b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index 0a805fa9b29..f8a04a06d80 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -1230,19 +1230,33 @@ void DRW_gpencil_populate_datablock(GPENCIL_e_data 
*e_data, void *vedata, Scene
                        gpl->runtime.derived_data = (GHash 
*)BLI_ghash_str_new(gpl->info);
                }
 
-               derived_gpf = BLI_ghash_lookup(gpl->runtime.derived_data, 
ob->id.name);
+               if (BLI_ghash_haskey(gpl->runtime.derived_data, ob->id.name)) {
+                       derived_gpf = 
BLI_ghash_lookup(gpl->runtime.derived_data, ob->id.name);
+               }
+               else {
+                       derived_gpf = NULL;
+               }
+
                if (derived_gpf == NULL) {
                        cache->is_dirty = true;
                }
                if (cache->is_dirty) {
                        if (derived_gpf != NULL) {
                                /* first clear temp data */
+                               if (BLI_ghash_haskey(gpl->runtime.derived_data, 
ob->id.name)) {
+                                       
BLI_ghash_remove(gpl->runtime.derived_data, ob->id.name, NULL, NULL);
+                               }
+
                                
BKE_gpencil_free_frame_runtime_data(derived_gpf);
-                               BLI_ghash_remove(gpl->runtime.derived_data, 
ob->id.name, NULL, NULL);
                        }
                        /* create new data */
                        derived_gpf = BKE_gpencil_frame_duplicate(gpf);
-                       BLI_ghash_insert(gpl->runtime.derived_data, 
ob->id.name, derived_gpf);
+                       if (!BLI_ghash_haskey(gpl->runtime.derived_data, 
ob->id.name)) {
+                               BLI_ghash_insert(gpl->runtime.derived_data, 
ob->id.name, derived_gpf);
+                       }
+                       else {
+                               BLI_ghash_reinsert(gpl->runtime.derived_data, 
ob->id.name, derived_gpf, NULL, NULL);
+                       }
                }
 
                /* draw onion skins */

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to