Skip to content

Commit c2bba9b

Browse files
committed
Fixed memory leaks in HLSLcc
1 parent 7d89203 commit c2bba9b

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/toGLSLDeclaration.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)