summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--glcpp-parse.y20
1 files changed, 20 insertions, 0 deletions
diff --git a/glcpp-parse.y b/glcpp-parse.y
index b07714e..807cf59 100644
--- a/glcpp-parse.y
+++ b/glcpp-parse.y
@@ -1385,12 +1385,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;
@@ -1409,6 +1427,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;