diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-08-05 13:31:48 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-08-05 13:31:48 +0400 |
commit | ca382a8d2a5093d139859f39e26337f92b94d151 (patch) | |
tree | ca24530f1af2c351cf985657ebc4e517fc7fcf43 /source/blender/compositor/operations/COM_KeyingScreenOperation.cpp | |
parent | 9be74a514b4d74c28f575e608938a9ad24962517 (diff) |
Fix for keying screen incorrect memory write when some of tracks are disabled.
Diffstat (limited to 'source/blender/compositor/operations/COM_KeyingScreenOperation.cpp')
-rw-r--r-- | source/blender/compositor/operations/COM_KeyingScreenOperation.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/source/blender/compositor/operations/COM_KeyingScreenOperation.cpp b/source/blender/compositor/operations/COM_KeyingScreenOperation.cpp index 33bdd892fe8..050aa3391d5 100644 --- a/source/blender/compositor/operations/COM_KeyingScreenOperation.cpp +++ b/source/blender/compositor/operations/COM_KeyingScreenOperation.cpp @@ -78,7 +78,7 @@ KeyingScreenOperation::TriangulationData *KeyingScreenOperation::buildVoronoiTri TriangulationData *triangulation; MovieTracking *tracking = &this->m_movieClip->tracking; MovieTrackingTrack *track; - VoronoiSite *sites; + VoronoiSite *sites, *site; ImBuf *ibuf; ListBase *tracksbase; ListBase edges = {NULL, NULL}; @@ -131,9 +131,8 @@ KeyingScreenOperation::TriangulationData *KeyingScreenOperation::buildVoronoiTri sites = (VoronoiSite *) MEM_callocN(sizeof(VoronoiSite) * sites_total, "keyingscreen voronoi sites"); track = (MovieTrackingTrack *) tracksbase->first; - for (track = (MovieTrackingTrack *) tracksbase->first, i = 0; track; track = track->next, i++) { + for (track = (MovieTrackingTrack *) tracksbase->first, site = sites; track; track = track->next) { MovieTrackingMarker *marker = BKE_tracking_marker_get(track, clip_frame); - VoronoiSite *site; ImBuf *pattern_ibuf; int j; float pos[2]; @@ -149,8 +148,6 @@ KeyingScreenOperation::TriangulationData *KeyingScreenOperation::buildVoronoiTri continue; } - site = &sites[i]; - pattern_ibuf = BKE_tracking_get_pattern_imbuf(ibuf, track, marker, TRUE, FALSE); zero_v3(site->color); @@ -172,6 +169,8 @@ KeyingScreenOperation::TriangulationData *KeyingScreenOperation::buildVoronoiTri site->co[0] = pos[0] * width; site->co[1] = pos[1] * height; + + site++; } IMB_freeImBuf(ibuf); |