Disallow defining macros whose names start with "__" or "GL_".
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 4 Jun 2010 21:53:58 +0000 (14:53 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 4 Jun 2010 21:53:58 +0000 (14:53 -0700)
The GLSL specification reserves these for future use.

glcpp-parse.y

index dd8e133f5506ff9ec38a3105c5d11b26dcbdee36..5072c48ee8da091426b7fe9262b83cc8b388d9fa 100644 (file)
@@ -1344,6 +1344,22 @@ _glcpp_parser_print_expanded_token_list (glcpp_parser_t *parser,
        _token_list_print (list);
 }
 
+void
+_check_for_reserved_macro_name (const char *identifier)
+{
+       /* According to the GLSL specification, macro names starting with "__"
+        * or "GL_" are reserved for future use.  So, don't allow them.
+        */
+       if (strncmp(identifier, "__", 2) == 0) {
+               fprintf (stderr, "Error: Macro names starting with \"__\" are reserved.\n");
+               exit(1);
+       }
+       if (strncmp(identifier, "GL_", 3) == 0) {
+               fprintf (stderr, "Error: Macro names starting with \"GL_\" are reserved.\n");
+               exit(1);
+       }
+}
+
 void
 _define_object_macro (glcpp_parser_t *parser,
                      const char *identifier,
@@ -1351,6 +1367,8 @@ _define_object_macro (glcpp_parser_t *parser,
 {
        macro_t *macro;
 
+       _check_for_reserved_macro_name(identifier);
+
        macro = xtalloc (parser, macro_t);
 
        macro->is_function = 0;
@@ -1369,6 +1387,8 @@ _define_function_macro (glcpp_parser_t *parser,
 {
        macro_t *macro;
 
+       _check_for_reserved_macro_name(identifier);
+
        macro = xtalloc (parser, macro_t);
 
        macro->is_function = 1;