summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2010-06-04 14:53:58 -0700
committerKenneth Graunke <[email protected]>2010-06-04 14:53:58 -0700
commit2ab0b13dd9b281b9c68b3d3e2fb01d19564d115e (patch)
treef3285ecb607819477b41eb08f5fcb392cf83c127
parente4b2731a25c071407d90c6c593a226574e9c36f9 (diff)
Disallow defining macros whose names start with "__" or "GL_".
The GLSL specification reserves these for future use.
-rw-r--r--glcpp-parse.y20
1 files changed, 20 insertions, 0 deletions
diff --git a/glcpp-parse.y b/glcpp-parse.y
index dd8e133f550..5072c48ee8d 100644
--- a/glcpp-parse.y
+++ b/glcpp-parse.y
@@ -1345,12 +1345,30 @@ _glcpp_parser_print_expanded_token_list (glcpp_parser_t *parser,
}
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,
token_list_t *replacements)
{
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;