Mesa (master): mesa: add missing type check for function calls

Brian Paul brianp at kemper.freedesktop.org
Wed Nov 26 17:03:58 UTC 2008


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

Author: Brian Paul <brian.paul at tungstengraphics.com>
Date:   Wed Nov 26 09:35:26 2008 -0700

mesa: add missing type check for function calls

---

 src/mesa/shader/slang/slang_codegen.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index 8d2655e..8abb642 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -2028,6 +2028,21 @@ _slang_gen_function_call_name(slang_assemble_ctx *A, const char *name,
       return NULL;
    }
 
+   /* type checking to be sure function's return type matches 'dest' type */
+   if (dest) {
+      slang_typeinfo t0;
+
+      slang_typeinfo_construct(&t0);
+      _slang_typeof_operation(A, dest, &t0);
+
+      if (!slang_type_specifier_equal(&t0.spec, &fun->header.type.specifier)) {
+         slang_info_log_error(A->log,
+                              "Incompatible type returned by call to '%s'",
+                              name);
+         return NULL;
+      }
+   }
+
    n = _slang_gen_function_call(A, fun, oper, dest);
 
    if (n && !n->Store && !dest




More information about the mesa-commit mailing list