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

Reply via email to