Do not call MacroExpander::popMacro() from MacroExpander::~MacroExpander().
MacroExpander::popMacro() assumes that the macro being popped has been fully parsed.
This may not be true for MacroExpander destructor which may get called anytime the compiler decides to abort the compilation process.
This patch just deletes the macro-contexts pushed in the stack without validating the parse state of current macro.

BUG=348
Review URL: https://codereview.appspot.com/6415043

git-svn-id: https://angleproject.googlecode.com/svn/trunk@1227 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/common/version.h b/src/common/version.h
index 98746e7..20bf952 100644
--- a/src/common/version.h
+++ b/src/common/version.h
@@ -1,7 +1,7 @@
 #define MAJOR_VERSION 1
 #define MINOR_VERSION 0
 #define BUILD_VERSION 0
-#define BUILD_REVISION 1226
+#define BUILD_REVISION 1227
 
 #define STRINGIFY(x) #x
 #define MACRO_STRINGIFY(x) STRINGIFY(x)
diff --git a/src/compiler/preprocessor/new/MacroExpander.cpp b/src/compiler/preprocessor/new/MacroExpander.cpp
index a6804dc..b0ed8d1 100644
--- a/src/compiler/preprocessor/new/MacroExpander.cpp
+++ b/src/compiler/preprocessor/new/MacroExpander.cpp
@@ -58,7 +58,10 @@
 
 MacroExpander::~MacroExpander()
 {
-    while (!mContextStack.empty()) popMacro();
+    for (size_t i = 0; i < mContextStack.size(); ++i)
+    {
+        delete mContextStack[i];
+    }
 }
 
 void MacroExpander::lex(Token* token)