Issue #79: fix C generation of switch/case AST nodes
diff --git a/CHANGES b/CHANGES
index 5fe9baf..92ab1e0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,7 @@
   - pycparser now carries its PLY dependency along. The pycparser/ply directory
     contains the source of PLY for the currently supported version. This makes
     distribution and testing easier.
+  - Issue #79: fix generation of new switch/case AST nodes.
   - Issue #83: fix parsing and C generation to distinguish between initializer
     lists in declarations and initializing variables with parenthesized
     comma-separated expressions.
diff --git a/pycparser/c_generator.py b/pycparser/c_generator.py
index 3b5d8e8..ae95d03 100644
--- a/pycparser/c_generator.py
+++ b/pycparser/c_generator.py
@@ -241,11 +241,15 @@
 
     def visit_Case(self, n):
         s = 'case ' + self.visit(n.expr) + ':\n'
-        s += self._generate_stmt(n.stmt, add_indent=True)
+        for stmt in n.stmts:
+            s += self._generate_stmt(stmt, add_indent=True)
         return s
 
     def visit_Default(self, n):
-        return 'default:\n' + self._generate_stmt(n.stmt, add_indent=True)
+        s = 'default:\n'
+        for stmt in n.stmts:
+            s += self._generate_stmt(stmt, add_indent=True)
+        return s
 
     def visit_Label(self, n):
         return n.name + ':\n' + self._generate_stmt(n.stmt)
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py
index 4251535..ab847d9 100644
--- a/tests/test_c_generator.py
+++ b/tests/test_c_generator.py
@@ -116,6 +116,25 @@
             }
         ''')
 
+    def test_switchcase(self):
+        self._assert_ctoc_correct(r'''
+        int main() {
+            switch (myvar) {
+            case 10:
+            {
+                k = 10;
+                p = k + 1;
+                break;
+            }
+            case 20:
+            case 30:
+                return 20;
+            default:
+                break;
+            }
+        }
+        ''')
+
     def test_issue36(self):
         self._assert_ctoc_correct(r'''
             int main() {