When using gen_spec_load_from path, only abort decoding if the read
length is 0. Previously, we were aborting if finding an EOF, even if
something was read from the file.
Also only kill the decoded file if no commands or structs were found,
and print a message in such case.
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
gen_spec_destroy(ctx.spec);
ctx.spec = NULL;
goto end;
- } else if (feof(input))
+ } else if (len == 0 && feof(input))
goto end;
if (XML_ParseBuffer(ctx.parser, len, len == 0) == 0) {
free(filename);
/* free ctx.spec if genxml is empty */
- if (ctx.spec && _mesa_hash_table_num_entries(ctx.spec->commands) == 0) {
+ if (ctx.spec &&
+ _mesa_hash_table_num_entries(ctx.spec->commands) == 0 &&
+ _mesa_hash_table_num_entries(ctx.spec->structs) == 0) {
+ fprintf(stderr,
+ "Error parsing XML: empty spec.\n");
gen_spec_destroy(ctx.spec);
return NULL;
}