From 5719794c0ab419d2ab03742f825cd8092f7bcdb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 25 Jul 2023 11:18:43 +0200 Subject: [PATCH] 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. --- src/Magnum/GL/Shader.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Magnum/GL/Shader.cpp b/src/Magnum/GL/Shader.cpp index ad59de1bd..46dadfe3b 100644 --- a/src/Magnum/GL/Shader.cpp +++ b/src/Magnum/GL/Shader.cpp @@ -660,7 +660,7 @@ Shader::Shader(const Version version, const Type type): _type{type}, _flags{Obje _offsetLineByOneOnOldGlsl = false; #endif - Containers::StringView versionString; + Containers::Optional versionString; switch(version) { #ifndef MAGNUM_TARGET_GLES 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 /* 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}