[MESA] Addendum to r60576.
[reactos.git] / reactos / dll / opengl / mesa / main / get.c
index 19f63d5..3f1144a 100644 (file)
@@ -1009,10 +1009,10 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
       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;
@@ -1132,10 +1132,20 @@ find_value(const char *func, GLenum pname, void **p, union value *v)
    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;
    }