Hi Alejandro,
On 20/07/18 17:16, Alejandro Piñeiro wrote:
+ +bool +piglit_load_source_from_shader_test(const char *filename, + GLenum shader_type, + bool spirv, + char **output_source, + unsigned *output_source_size) +{ + char group_name[4096]; + char *source = NULL; + unsigned text_size; + char *line = NULL; + char *first_line = NULL; + + group_name_for_stage(shader_type, spirv, group_name); + + char *text = piglit_load_text_file(filename, &text_size);
There is a memory leak, you forgot to free "text" before returning.
+ line = text; + + if (line == NULL) { + fprintf(stderr, "Could not read file \"%s\"\n", filename); + return false; + } + + while (line[0] != '\0') { + if (line[0] == '[' && first_line != NULL) { + break; + } + + if (line[0] == '[' && first_line == NULL) { + if (parse_str(line, group_name, NULL)) { + first_line = strchrnul(line, '\n'); + if (first_line[0] != '\0') + first_line++; + } + } + + line = strchrnul(line, '\n'); + if (line[0] != '\0') + line++; + } + + if (first_line == NULL) { + fprintf(stderr, "Could not find groupname \"%s\" on file \"%s\"\n", + group_name, filename); + return false; + } + + text_size = line - first_line + 1; + source = malloc(sizeof(char*) * text_size); + snprintf(source, line - first_line + 1, "%s", first_line); + + if (output_source) + *output_source = source; + + if (output_source_size) + *output_source_size = text_size; + + return true; +}
Regards. _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit