COPY_4FV(v->value_float_4, ctx->Fog.Color);
break;
case GL_COLOR_CLEAR_VALUE:
- v->value_float_4[0] = ctx->Color.ClearColor.f[0], 0.0F, 1.0F;
- v->value_float_4[1] = ctx->Color.ClearColor.f[1], 0.0F, 1.0F;
- v->value_float_4[2] = ctx->Color.ClearColor.f[2], 0.0F, 1.0F;
- v->value_float_4[3] = ctx->Color.ClearColor.f[3], 0.0F, 1.0F;
+ v->value_float_4[0] = ctx->Color.ClearColor.f[0];
+ v->value_float_4[1] = ctx->Color.ClearColor.f[1];
+ v->value_float_4[2] = ctx->Color.ClearColor.f[2];
+ v->value_float_4[3] = ctx->Color.ClearColor.f[3];
break;
case GL_ALPHA_TEST_REF:
v->value_float = ctx->Color.AlphaRef;
mask = Elements(table) - 1;
hash = (pname * prime_factor);
while (1) {
- d = &values[table[hash & mask]];
+ int idx = table[hash & mask];
+
+ /* If the enum isn't valid, the hash walk ends with index 0,
+ * pointing to the first entry of values[] which doesn't hold
+ * any valid enum. */
+ if (unlikely(idx == 0)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=%s)", func,
+ _mesa_lookup_enum_by_nr(pname));
+ return &error_value;
+ }
+ d = &values[idx];
if (likely(d->pname == pname))
- break;
+ break;
hash += prime_step;
}