[C++] Give fixed symbol IDs for 1-character variables
diff --git a/symtab.cc b/symtab.cc
index 342d222..54979a6 100644
--- a/symtab.cc
+++ b/symtab.cc
@@ -34,12 +34,20 @@
   Symtab() {
     CHECK(g_symbols == NULL);
     g_symbols = &symbols_;
-    Symbol s = Intern("");
+
+    Symbol s = InternImpl("");
     CHECK(s.v_ == 0);
     CHECK(Intern("") == s);
+    char b[2];
+    b[1] = 0;
+    for (int i = 1; i < 256; i++) {
+      b[0] = i;
+      s = InternImpl(b);
+      CHECK(s.val() == i);
+    }
   }
 
-  Symbol Intern(StringPiece s) {
+  Symbol InternImpl(StringPiece s) {
     auto found = symtab_.find(s);
     if (found != symtab_.end()) {
       return found->second;
@@ -51,6 +59,13 @@
     return sym;
   }
 
+  Symbol Intern(StringPiece s) {
+    if (s.size() <= 1) {
+      return Symbol(s.empty() ? 0 : (unsigned char)s[0]);
+    }
+    return InternImpl(s);
+  }
+
  private:
   unordered_map<StringPiece, Symbol> symtab_;
   vector<string> symbols_;