@@ -714,24 +714,32 @@ void ToGLSL::AddUserOutput(const Declaration* psDecl)
714714 renderTarget = 0 ;
715715 index = 1 ;
716716 }
717+
718+ bdestroy (layoutQualifier);
717719 layoutQualifier = bformat (" layout(location = %d, index = %d) " , renderTarget, index);
718720 }
719721 else
720722 {
723+ bdestroy (layoutQualifier);
721724 layoutQualifier = bformat (" layout(location = %d) " , renderTarget);
722725 }
723726 }
724727
728+ auto lq = bstr2cstr (layoutQualifier, ' \0 ' );
729+
725730 if (haveFramebufferFetch)
726731 {
727732 bcatcstr (glsl, " #ifdef GL_EXT_shader_framebuffer_fetch\n " );
728- bformata (glsl, " %sinout %s%s %s;\n " , bstr2cstr (layoutQualifier, ' \0 ' ) , Precision, type->data , OutputName);
733+ bformata (glsl, " %sinout %s%s %s;\n " , lq , Precision, type->data , OutputName);
729734 bcatcstr (glsl, " #else\n " );
730- bformata (glsl, " %sout %s%s %s;\n " , bstr2cstr (layoutQualifier, ' \0 ' ) , Precision, type->data , OutputName);
735+ bformata (glsl, " %sout %s%s %s;\n " , lq , Precision, type->data , OutputName);
731736 bcatcstr (glsl, " #endif\n " );
732737 }
733738 else
734- bformata (glsl, " %sout %s%s %s;\n " , bstr2cstr (layoutQualifier, ' \0 ' ), Precision, type->data , OutputName);
739+ bformata (glsl, " %sout %s%s %s;\n " , lq, Precision, type->data , OutputName);
740+
741+ bdestroy (layoutQualifier);
742+ bcstrfree (lq);
735743 }
736744 }
737745 break ;
0 commit comments