[Mesa-dev] [PATCH 06/11] i965: Initialize all member variables of cfg_t on construction.

Kenneth Graunke kenneth at whitecape.org
Tue Sep 24 11:12:43 PDT 2013


On 09/20/2013 09:51 PM, Francisco Jerez wrote:
> The cfg_t object relies on the memory allocator zeroing out its
> contents before it's initialized, which is quite an unusual practice
> in the C++ world because it ties objects to some specific allocation
> scheme, and gives unpredictable results when an object is created with
> a different allocator -- Stack allocation, array allocation, or
> aggregation inside a different object are some of the useful
> possibilities that come to my mind.  Initialize all fields from the
> constructor and stop using the zeroing allocator.
> ---
>  src/mesa/drivers/dri/i965/brw_cfg.cpp | 1 +
>  src/mesa/drivers/dri/i965/brw_cfg.h   | 2 +-
>  2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_cfg.cpp b/src/mesa/drivers/dri/i965/brw_cfg.cpp
> index 6a886ce..4ba4dcb 100644
> --- a/src/mesa/drivers/dri/i965/brw_cfg.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_cfg.cpp
> @@ -82,6 +82,7 @@ cfg_t::create(void *parent_mem_ctx, exec_list *instructions)
>  {
>     mem_ctx = ralloc_context(parent_mem_ctx);
>     block_list.make_empty();
> +   blocks = NULL;
>     num_blocks = 0;
>     ip = 0;
>     cur = NULL;
> diff --git a/src/mesa/drivers/dri/i965/brw_cfg.h b/src/mesa/drivers/dri/i965/brw_cfg.h
> index 505a5cf..ec5a3a0 100644
> --- a/src/mesa/drivers/dri/i965/brw_cfg.h
> +++ b/src/mesa/drivers/dri/i965/brw_cfg.h
> @@ -60,7 +60,7 @@ public:
>  
>  class cfg_t {
>  public:
> -   DECLARE_RZALLOC_CXX_OPERATORS(cfg_t)
> +   DECLARE_RALLOC_CXX_OPERATORS(cfg_t)
>  
>     cfg_t(backend_visitor *v);
>     cfg_t(void *mem_ctx, exec_list *instructions);
> 

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>


More information about the mesa-dev mailing list