[Mesa-dev] [PATCH 5/9] glsl: Fix memcpy size in ir_constant
Ian Romanick
idr at freedesktop.org
Fri Feb 7 16:30:52 PST 2014
On 02/07/2014 04:44 AM, Juha-Pekka Heikkila wrote:
> ir_constant::ir_constant(const struct glsl_type,
> const ir_constant_data *) was copying too much memory.
The code looks correct as-is to me. This copies one ir_constant_data
union to another... they're declared as the same type, and they have the
same size. What is the actual error? Is there some code somewhere
that's casting a different type to ir_constant_data* to pass into this
constructor?
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> ---
> src/glsl/ir.cpp | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
> index 1a36bd6..abc5568 100644
> --- a/src/glsl/ir.cpp
> +++ b/src/glsl/ir.cpp
> @@ -622,7 +622,7 @@ ir_constant::ir_constant(const struct glsl_type *type,
>
> this->ir_type = ir_type_constant;
> this->type = type;
> - memcpy(& this->value, data, sizeof(this->value));
> + memcpy(& this->value, data, type->std140_size(false));
> }
>
> ir_constant::ir_constant(float f, unsigned vector_elements)
>
More information about the mesa-dev
mailing list