Mesa (master): intel/gen_decoder: Fix parsing of small genxml file.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 23 17:45:34 UTC 2019


Module: Mesa
Branch: master
Commit: 1f2b22a6bd3f75770e2d787c0524cdeebafdcab2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1f2b22a6bd3f75770e2d787c0524cdeebafdcab2

Author: Rafael Antognolli <rafael.antognolli at intel.com>
Date:   Tue Jul 16 10:00:18 2019 -0700

intel/gen_decoder: Fix parsing of small genxml file.

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 at intel.com>

---

 src/intel/common/gen_decoder.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c
index 50ef2c4204f..90b0f97965f 100644
--- a/src/intel/common/gen_decoder.c
+++ b/src/intel/common/gen_decoder.c
@@ -697,7 +697,7 @@ gen_spec_load_from_path(const struct gen_device_info *devinfo,
          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) {
@@ -719,7 +719,11 @@ gen_spec_load_from_path(const struct gen_device_info *devinfo,
    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;
    }




More information about the mesa-commit mailing list