fix error flagging
authorBrian <brian@yutani.localnet.net>
Mon, 26 Feb 2007 22:06:56 +0000 (15:06 -0700)
committerBrian <brian@yutani.localnet.net>
Mon, 26 Feb 2007 22:06:56 +0000 (15:06 -0700)
src/mesa/shader/slang/slang_compile.c
src/mesa/shader/slang/slang_log.c
src/mesa/shader/slang/slang_log.h

index 1a4c7d31f1687ba87488c5eb737a6ddc244fb466..dc2e680e9914a76b9bc30ea3274fb8627e4ceb33 100644 (file)
@@ -2070,16 +2070,9 @@ _slang_compile(GLcontext *ctx, struct gl_shader *shader)
 
    success = compile_shader(ctx, &obj, type, &info_log, shader);
 
-   if (success && !info_log.text) {
-#if 0
-      slang_create_uniforms(&object->expdata, shader);
-      _mesa_print_program(program);
-      _mesa_print_program_parameters(ctx, program);
-#endif
-   }
-   else {
+   if (!success || info_log.error_flag) {
       success = GL_FALSE;
-      /* XXX more work on info log needed here */
+      /* copy info-log string to shader object */
       if (info_log.text) {
          if (shader->InfoLog) {
             free(shader->InfoLog);
index b6545b2c2e9e4382aa748684afd5983970c9e68b..e8387444914c155aab965a5b496694debaf6c317 100644 (file)
@@ -34,7 +34,8 @@ void
 slang_info_log_construct(slang_info_log * log)
 {
    log->text = NULL;
-   log->dont_free_text = 0;
+   log->dont_free_text = GL_FALSE;
+   log->error_flag = GL_FALSE;
 }
 
 void
@@ -97,6 +98,7 @@ slang_info_log_error(slang_info_log * log, const char *msg, ...)
    va_start(va, msg);
    _mesa_vsprintf(buf, msg, va);
    va_end(va);
+   log->error_flag = GL_TRUE;
    if (slang_info_log_message(log, "Error", buf))
       return 1;
    slang_info_log_memory(log);
@@ -122,7 +124,8 @@ void
 slang_info_log_memory(slang_info_log * log)
 {
    if (!slang_info_log_message(log, "Error", "Out of memory.")) {
-      log->dont_free_text = 1;
+      log->dont_free_text = GL_TRUE;
+      log->error_flag = GL_TRUE;
       log->text = out_of_memory;
    }
 }
index e4ca3a22f1175ba49610aab48915c0fca508fc6e..dcaba0285a703fca2d98830778ca1a207f33b9ea 100644 (file)
@@ -30,7 +30,8 @@
 typedef struct slang_info_log_
 {
    char *text;
-   int dont_free_text;
+   GLboolean dont_free_text;
+   GLboolean error_flag;
 } slang_info_log;