From: Pekka Paalanen Date: Thu, 7 Sep 2017 12:32:01 +0000 (+0300) Subject: compositor-drm: drm_property_info_free() must reset X-Git-Tag: upstream/5.0.0~278 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=46e4f97ab62a026968ca2d919a79bd2dd0a3c73a;p=platform%2Fupstream%2Fweston.git compositor-drm: drm_property_info_free() must reset This function needs to reset the structures to NULL, otherwise it is not possible to re-use a once "freed" property info array. Being able to re-use an array is useful when the memory allocation and array lifetimes do not match. A specific example is drm_output that is changed to allocate the CRTC on enable() and deallocate it on disable(). A drm_output might be enabled and disabled multiple times. Signed-off-by: Pekka Paalanen Reviewed-by: Ian Ray Reviewed-by: Daniel Stone --- diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c index 2f7247c..268394b 100644 --- a/libweston/compositor-drm.c +++ b/libweston/compositor-drm.c @@ -721,7 +721,9 @@ drm_property_info_populate(struct drm_backend *b, /** * Free DRM property information * - * Frees all memory associated with a DRM property info array. + * Frees all memory associated with a DRM property info array and zeroes + * it out, leaving it usable for a further drm_property_info_update() or + * drm_property_info_free(). * * @param info DRM property info array * @param num_props Number of entries in array to free @@ -733,6 +735,8 @@ drm_property_info_free(struct drm_property_info *info, int num_props) for (i = 0; i < num_props; i++) free(info[i].enum_values); + + memset(info, 0, sizeof(*info) * num_props); } static void