GPencil: Fix unreported memory leak

Thanks to @dfelinto for his help
This commit is contained in:
Antonio Vazquez 2020-01-07 14:13:37 +01:00
parent a99f6e5df1
commit 94d19d5ff5
2 changed files with 8 additions and 1 deletions

View File

@ -862,6 +862,14 @@ void BKE_gpencil_modifiers_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
const bool time_remap = BKE_gpencil_has_time_modifiers(ob);
int cfra_eval = (int)DEG_get_ctime(depsgraph);
/* Clear any previous evaluated data. */
if (ob->runtime.gpencil_tot_layers > 0) {
for (int i = 0; i < ob->runtime.gpencil_tot_layers; i++) {
bGPDframe *gpf_eval = &ob->runtime.gpencil_evaluated_frames[i];
BKE_gpencil_free_frame_runtime_data(gpf_eval);
}
}
/* Create array of evaluated frames equal to number of layers. */
ob->runtime.gpencil_tot_layers = BLI_listbase_count(&gpd->layers);
CLAMP_MIN(ob->runtime.gpencil_tot_layers, 1);

View File

@ -349,7 +349,6 @@ void DRW_gpencil_freecache(struct Object *ob)
for (int i = 0; i < ob->runtime.gpencil_tot_layers; i++) {
bGPDframe *gpf_eval = &ob->runtime.gpencil_evaluated_frames[i];
BKE_gpencil_free_frame_runtime_data(gpf_eval);
gpf_eval = NULL;
}
ob->runtime.gpencil_tot_layers = 0;