Issue 2410: Fix crash when using one-character identifiers in C and C++ macros.
authorgregnoel <gregnoel@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 14 May 2009 06:35:37 +0000 (06:35 +0000)
committergregnoel <gregnoel@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 14 May 2009 06:35:37 +0000 (06:35 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@4198 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/cpp.py
src/engine/SCons/cppTests.py

index a16016487e4f41f067273cea9e526e02cd043f40..47d664c14260853e45cc606a752b023143f5c77a 100644 (file)
@@ -66,10 +66,10 @@ cpp_lines_dict = {
     #   2) The optional parentheses and arguments (if it's a function-like
     #      macro, '' if it's not).
     #   3) The expansion value.
-    ('define',)         : '\s+([_A-Za-z][_A-Za-z0-9_]+)(\([^)]*\))?\s*(.*)',
+    ('define',)         : '\s+([_A-Za-z][_A-Za-z0-9_]*)(\([^)]*\))?\s*(.*)',
 
     # Fetch the #undefed keyword from a #undef line.
-    ('undef',)          : '\s+([_A-Za-z][A-Za-z0-9_]+)',
+    ('undef',)          : '\s+([_A-Za-z][A-Za-z0-9_]*)',
 }
 
 # Create a table that maps each individual C preprocessor directive to
index 1c83a13085917973cab652ff77c4215f0f26369a..252a06425a5dd42a5ead3a5bae3c44e366a3f99f 100644 (file)
@@ -300,6 +300,10 @@ macro_function_input = """
 
 /* Make sure we don't die if the expansion isn't a string. */
 #define FUNC_INTEGER(x)       1
+
+/* Make sure one-character names are recognized. */
+#define _(x)       translate(x)
+#undef _
 """