mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 11:00:11 +01:00
glsl2 main: Use talloc to allocate whole_program struct.
This way, whole_program can be our top-level talloc context object, allowing us to free the lot with a single talloc_free in the end.
This commit is contained in:
parent
4b2d32b5b5
commit
be83eb8671
1 changed files with 15 additions and 12 deletions
27
main.cpp
27
main.cpp
|
|
@ -200,20 +200,21 @@ main(int argc, char **argv)
|
|||
if (argc <= optind)
|
||||
usage_fail(argv[0]);
|
||||
|
||||
struct glsl_program whole_program;
|
||||
memset(&whole_program, 0, sizeof(whole_program));
|
||||
struct glsl_program *whole_program;
|
||||
|
||||
whole_program = talloc_zero (NULL, struct glsl_program);
|
||||
assert(whole_program != NULL);
|
||||
|
||||
for (/* empty */; argc > optind; optind++) {
|
||||
whole_program.Shaders = (struct glsl_shader **)
|
||||
realloc(whole_program.Shaders,
|
||||
sizeof(struct glsl_shader *) * (whole_program.NumShaders + 1));
|
||||
assert(whole_program.Shaders != NULL);
|
||||
whole_program->Shaders = (struct glsl_shader **)
|
||||
realloc(whole_program->Shaders,
|
||||
sizeof(struct glsl_shader *) * (whole_program->NumShaders + 1));
|
||||
assert(whole_program->Shaders != NULL);
|
||||
|
||||
/* talloc context should probably be whole_program */
|
||||
struct glsl_shader *shader = talloc_zero(NULL, glsl_shader);
|
||||
struct glsl_shader *shader = talloc_zero(whole_program, glsl_shader);
|
||||
|
||||
whole_program.Shaders[whole_program.NumShaders] = shader;
|
||||
whole_program.NumShaders++;
|
||||
whole_program->Shaders[whole_program->NumShaders] = shader;
|
||||
whole_program->NumShaders++;
|
||||
|
||||
const unsigned len = strlen(argv[optind]);
|
||||
if (len < 6)
|
||||
|
|
@ -245,9 +246,11 @@ main(int argc, char **argv)
|
|||
}
|
||||
|
||||
if ((status == EXIT_SUCCESS) && do_link) {
|
||||
link_shaders(&whole_program);
|
||||
status = (whole_program.LinkStatus) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
link_shaders(whole_program);
|
||||
status = (whole_program->LinkStatus) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
}
|
||||
|
||||
talloc_free(whole_program);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue