glsl/pp: Check for reserved macro names.
authorMichal Krol <michal@vmware.com>
Wed, 23 Sep 2009 07:33:12 +0000 (09:33 +0200)
committerMichal Krol <michal@vmware.com>
Wed, 23 Sep 2009 07:33:12 +0000 (09:33 +0200)
src/glsl/pp/sl_pp_define.c

index 391178aa696f93dc3824457a3ca9e723b2a102a8..d18a7ee2895c3025b4e29d2147ca8e3b495253b8 100644 (file)
@@ -26,7 +26,9 @@
  **************************************************************************/
 
 #include <stdlib.h>
+#include <string.h>
 #include "sl_pp_process.h"
+#include "sl_pp_public.h"
 
 
 static void
@@ -126,6 +128,20 @@ sl_pp_process_define(struct sl_pp_context *context,
       return -1;
    }
 
+   /* Check for reserved macro names */
+   {
+      const char *name = sl_pp_context_cstr(context, macro_name);
+
+      if (strstr(name, "__")) {
+         strcpy(context->error_msg, "macro names containing `__' are reserved");
+         return 1;
+      }
+      if (name[0] == 'G' && name[1] == 'L' && name[2] == '_') {
+         strcpy(context->error_msg, "macro names prefixed with `GL_' are reserved");
+         return 1;
+      }
+   }
+
    for (macro = context->macro; macro; macro = macro->next) {
       if (macro->name == macro_name) {
          break;