diff options
author | Kenneth Graunke <[email protected]> | 2010-06-04 14:53:58 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2010-06-04 14:53:58 -0700 |
commit | 2ab0b13dd9b281b9c68b3d3e2fb01d19564d115e (patch) | |
tree | f3285ecb607819477b41eb08f5fcb392cf83c127 | |
parent | e4b2731a25c071407d90c6c593a226574e9c36f9 (diff) |
Disallow defining macros whose names start with "__" or "GL_".
The GLSL specification reserves these for future use.
-rw-r--r-- | glcpp-parse.y | 20 |
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; |