1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-08-12 09:25:19 +00:00

Ensured all asprintf return values are checked.

This commit is contained in:
Thomas Harte
2017-11-12 17:29:20 -05:00
parent aa77be1c10
commit 8713cfa613
2 changed files with 17 additions and 6 deletions

View File

@@ -32,7 +32,7 @@ std::unique_ptr<IntermediateShader> IntermediateShader::make_shader(const std::s
const char *input_variable = input_is_inputPosition ? "inputPosition" : "outputPosition"; const char *input_variable = input_is_inputPosition ? "inputPosition" : "outputPosition";
char *vertex_shader; char *vertex_shader;
(void)asprintf(&vertex_shader, int length = asprintf(&vertex_shader,
"#version 150\n" "#version 150\n"
"in vec2 inputStart;" "in vec2 inputStart;"
@@ -107,6 +107,8 @@ std::unique_ptr<IntermediateShader> IntermediateShader::make_shader(const std::s
"gl_Position = vec4(eyePosition, 0.0, 1.0);" "gl_Position = vec4(eyePosition, 0.0, 1.0);"
"}", sampler_type, input_variable); "}", sampler_type, input_variable);
if(length <= 0) return nullptr;
std::unique_ptr<IntermediateShader> shader(new IntermediateShader(vertex_shader, fragment_shader, bindings)); std::unique_ptr<IntermediateShader> shader(new IntermediateShader(vertex_shader, fragment_shader, bindings));
std::free(vertex_shader); std::free(vertex_shader);
@@ -117,7 +119,7 @@ std::unique_ptr<IntermediateShader> IntermediateShader::make_source_conversion_s
char *derived_composite_sample = nullptr; char *derived_composite_sample = nullptr;
const char *composite_sample = composite_shader.c_str(); const char *composite_sample = composite_shader.c_str();
if(!composite_shader.size()) { if(!composite_shader.size()) {
(void)asprintf(&derived_composite_sample, int length = asprintf(&derived_composite_sample,
"%s\n" "%s\n"
"uniform mat3 rgbToLumaChroma;" "uniform mat3 rgbToLumaChroma;"
"float composite_sample(usampler2D texID, vec2 coordinate, vec2 iCoordinate, float phase, float amplitude)" "float composite_sample(usampler2D texID, vec2 coordinate, vec2 iCoordinate, float phase, float amplitude)"
@@ -128,11 +130,14 @@ std::unique_ptr<IntermediateShader> IntermediateShader::make_source_conversion_s
"return dot(lumaChromaColour, vec3(1.0 - amplitude, quadrature));" "return dot(lumaChromaColour, vec3(1.0 - amplitude, quadrature));"
"}", "}",
rgb_shader.c_str()); rgb_shader.c_str());
if(length <= 0) {
derived_composite_sample = nullptr;
}
composite_sample = derived_composite_sample; composite_sample = derived_composite_sample;
} }
char *fragment_shader; char *fragment_shader;
(void)asprintf(&fragment_shader, int length = asprintf(&fragment_shader,
"#version 150\n" "#version 150\n"
"in vec2 inputPositionsVarying[11];" "in vec2 inputPositionsVarying[11];"
@@ -152,6 +157,8 @@ std::unique_ptr<IntermediateShader> IntermediateShader::make_source_conversion_s
, composite_sample); , composite_sample);
std::free(derived_composite_sample); std::free(derived_composite_sample);
if(!length) return nullptr;
std::unique_ptr<IntermediateShader> shader = make_shader(fragment_shader, true, true); std::unique_ptr<IntermediateShader> shader = make_shader(fragment_shader, true, true);
std::free(fragment_shader); std::free(fragment_shader);
@@ -160,7 +167,7 @@ std::unique_ptr<IntermediateShader> IntermediateShader::make_source_conversion_s
std::unique_ptr<IntermediateShader> IntermediateShader::make_rgb_source_shader(const std::string &rgb_shader) { std::unique_ptr<IntermediateShader> IntermediateShader::make_rgb_source_shader(const std::string &rgb_shader) {
char *fragment_shader; char *fragment_shader;
(void)asprintf(&fragment_shader, int length = asprintf(&fragment_shader,
"#version 150\n" "#version 150\n"
"in vec2 inputPositionsVarying[11];" "in vec2 inputPositionsVarying[11];"
@@ -179,6 +186,8 @@ std::unique_ptr<IntermediateShader> IntermediateShader::make_rgb_source_shader(c
"}" "}"
, rgb_shader.c_str()); , rgb_shader.c_str());
if(length <= 0) return nullptr;
std::unique_ptr<IntermediateShader> shader = make_shader(fragment_shader, true, true); std::unique_ptr<IntermediateShader> shader = make_shader(fragment_shader, true, true);
std::free(fragment_shader); std::free(fragment_shader);

View File

@@ -25,7 +25,7 @@ std::unique_ptr<OutputShader> OutputShader::make_shader(const char *fragment_met
const char *sampler_type = use_usampler ? "usampler2D" : "sampler2D"; const char *sampler_type = use_usampler ? "usampler2D" : "sampler2D";
char *vertex_shader; char *vertex_shader;
(void)asprintf(&vertex_shader, int vertex_length = asprintf(&vertex_shader,
"#version 150\n" "#version 150\n"
"in vec2 horizontal;" "in vec2 horizontal;"
@@ -64,7 +64,7 @@ std::unique_ptr<OutputShader> OutputShader::make_shader(const char *fragment_met
"}", sampler_type); "}", sampler_type);
char *fragment_shader; char *fragment_shader;
(void)asprintf(&fragment_shader, int fragment_length = asprintf(&fragment_shader,
"#version 150\n" "#version 150\n"
"in float lateralVarying;" "in float lateralVarying;"
@@ -84,6 +84,8 @@ std::unique_ptr<OutputShader> OutputShader::make_shader(const char *fragment_met
"}", "}",
sampler_type, fragment_methods, colour_expression); sampler_type, fragment_methods, colour_expression);
if(vertex_length <= 0 || fragment_length <= 0) return nullptr;
std::unique_ptr<OutputShader> result(new OutputShader(vertex_shader, fragment_shader, bindings)); std::unique_ptr<OutputShader> result(new OutputShader(vertex_shader, fragment_shader, bindings));
std::free(vertex_shader); std::free(vertex_shader);
std::free(fragment_shader); std::free(fragment_shader);