diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.cpp b/Userland/Libraries/LibGL/SoftwareGLContext.cpp index 88048df705..4b7e515512 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.cpp +++ b/Userland/Libraries/LibGL/SoftwareGLContext.cpp @@ -1868,9 +1868,10 @@ GLboolean SoftwareGLContext::gl_is_texture(GLuint texture) void SoftwareGLContext::gl_active_texture(GLenum texture) { - RETURN_WITH_ERROR_IF(texture < GL_TEXTURE0 || texture > GL_TEXTURE31, GL_INVALID_ENUM); + RETURN_WITH_ERROR_IF(texture < GL_TEXTURE0 || texture >= GL_TEXTURE0 + m_device_info.num_texture_units, GL_INVALID_ENUM); - m_active_texture_unit = &m_texture_units.at(texture - GL_TEXTURE0); + m_active_texture_unit_index = texture - GL_TEXTURE0; + m_active_texture_unit = &m_texture_units.at(m_active_texture_unit_index); } void SoftwareGLContext::gl_get_booleanv(GLenum pname, GLboolean* data) diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.h b/Userland/Libraries/LibGL/SoftwareGLContext.h index 6df9d3f370..ff5c794afa 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.h +++ b/Userland/Libraries/LibGL/SoftwareGLContext.h @@ -264,6 +264,7 @@ private: HashMap> m_allocated_textures; Vector m_texture_units; TextureUnit* m_active_texture_unit; + size_t m_active_texture_unit_index { 0 }; // Texture coordinate generation state struct TextureCoordinateGeneration {