Browse Source

GL: avoid an error-prone early return from the Shader constructor.

Several times I added some additional code at the end, only to spend
a lot of extra time debugging why it wasn't executed in some cases.
pull/168/head
Vladimír Vondruš 3 years ago
parent
commit
5719794c0a
  1. 9
      src/Magnum/GL/Shader.cpp

9
src/Magnum/GL/Shader.cpp

@ -660,7 +660,7 @@ Shader::Shader(const Version version, const Type type): _type{type}, _flags{Obje
_offsetLineByOneOnOldGlsl = false; _offsetLineByOneOnOldGlsl = false;
#endif #endif
Containers::StringView versionString; Containers::Optional<Containers::StringView> versionString;
switch(version) { switch(version) {
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
case Version::GL210: versionString = "#version 120\n"_s; break; case Version::GL210: versionString = "#version 120\n"_s; break;
@ -685,12 +685,13 @@ Shader::Shader(const Version version, const Type type): _type{type}, _flags{Obje
#endif #endif
/* The user is responsible for (not) adding #version directive */ /* The user is responsible for (not) adding #version directive */
case Version::None: return; case Version::None: versionString = ""_s; break;
} }
CORRADE_ASSERT(!versionString.isEmpty(), "GL::Shader::Shader(): unsupported version" << version, ); CORRADE_ASSERT(versionString, "GL::Shader::Shader(): unsupported version" << version, );
arrayAppend(_sources, Containers::String::nullTerminatedGlobalView(versionString)); if(*versionString)
arrayAppend(_sources, Containers::String::nullTerminatedGlobalView(*versionString));
} }
Shader::Shader(const Type type, const GLuint id, ObjectFlags flags) noexcept: _type{type}, _id{id}, _flags{flags} Shader::Shader(const Type type, const GLuint id, ObjectFlags flags) noexcept: _type{type}, _id{id}, _flags{flags}

Loading…
Cancel
Save