[libcamera-devel] [PATCH] libcamera: signal: Don't use reinterpret_cast<>() to perform downcasts

Niklas Söderlund niklas.soderlund at ragnatech.se
Sun Jan 27 01:42:14 CET 2019


Hi Laurent,

Thanks for your work.

On 2019-01-26 18:32:57 +0200, Laurent Pinchart wrote:
> Use static_cast<>() instead of reinterpret_cast<>() to perform
> downcasts, as reinterpret_cast<>() isn't meant (and guaranteed to be
> safe) for that purpose.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

> ---
>  include/libcamera/signal.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/include/libcamera/signal.h b/include/libcamera/signal.h
> index 0b437a486c08..c375b0a878af 100644
> --- a/include/libcamera/signal.h
> +++ b/include/libcamera/signal.h
> @@ -37,7 +37,7 @@ public:
>  	SlotMember(T *obj, void(T::*func)(Args...))
>  		: SlotBase<Args...>(obj), func_(func) { }
>  
> -	void invoke(Args... args) { (reinterpret_cast<T *>(this->obj_)->*func_)(args...); }
> +	void invoke(Args... args) { (static_cast<T *>(this->obj_)->*func_)(args...); }
>  
>  private:
>  	friend class Signal<Args...>;
> @@ -111,7 +111,7 @@ public:
>  			 * match, so we can safely cast to SlotMember<T, Args>.
>  			 */
>  			if (slot->obj_ == object &&
> -			    reinterpret_cast<SlotMember<T, Args...> *>(slot)->func_ == func) {
> +			    static_cast<SlotMember<T, Args...> *>(slot)->func_ == func) {
>  				iter = slots_.erase(iter);
>  				delete slot;
>  			} else {
> @@ -125,7 +125,7 @@ public:
>  		for (auto iter = slots_.begin(); iter != slots_.end(); ) {
>  			SlotBase<Args...> *slot = *iter;
>  			if (slot->obj_ == nullptr &&
> -			    reinterpret_cast<SlotStatic<Args...> *>(slot)->func_ == func) {
> +			    static_cast<SlotStatic<Args...> *>(slot)->func_ == func) {
>  				iter = slots_.erase(iter);
>  				delete slot;
>  			} else {
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list