diff -ru CMock.pristine/lib/cmock_generator.rb ThrowTheSwitch-CMock-668c415/lib/cmock_generator.rb
--- CMock.pristine/lib/cmock_generator.rb	2012-07-16 10:40:21.000000000 -0400
+++ ThrowTheSwitch-CMock-668c415/lib/cmock_generator.rb	2012-07-28 15:13:06.000000000 -0400
@@ -28,11 +28,16 @@
   def create_mock(module_name, parsed_stuff)
     @module_name = module_name
     @mock_name   = @prefix + @module_name
+    @mock_ident  = to_c_ident(@mock_name)
     create_mock_header_file(parsed_stuff)
     create_mock_source_file(parsed_stuff)
   end
   
   private if $ThisIsOnlyATest.nil? ##############################
+
+  def to_c_ident(str)
+    return str.gsub(/[^_a-zA-Z0-9]/, "_")
+  end
   
   def create_mock_header_file(parsed_stuff)
     @file_writer.create_file(@mock_name + ".h") do |file, filename|
@@ -62,8 +67,8 @@
   end
   
   def create_mock_header_header(file, filename) 
-    define_name   = filename.gsub(/\.h/, "_h").upcase
-    orig_filename = filename.gsub(@config.mock_prefix, "")   
+    define_name   = to_c_ident(filename.gsub(/\.h/, "_h")).upcase
+    orig_filename = @module_name + ".h"
     file << "/* AUTOGENERATED FILE. DO NOT EDIT. */\n"
     file << "#ifndef _#{define_name}\n"
     file << "#define _#{define_name}\n\n"
@@ -82,9 +87,9 @@
   end
 
   def create_mock_header_service_call_declarations(file) 
-    file << "void #{@mock_name}_Init(void);\n"
-    file << "void #{@mock_name}_Destroy(void);\n"
-    file << "void #{@mock_name}_Verify(void);\n\n"
+    file << "void #{@mock_ident}_Init(void);\n"
+    file << "void #{@mock_ident}_Destroy(void);\n"
+    file << "void #{@mock_ident}_Verify(void);\n\n"
   end
 
   def create_mock_header_footer(header)
@@ -92,7 +97,7 @@
   end
   
   def create_source_header_section(file, filename)
-    header_file = filename.gsub(".c",".h")
+    header_file = filename.gsub(/\.c$/,".h")
     file << "/* AUTOGENERATED FILE. DO NOT EDIT. */\n"
     file << "#include <string.h>\n"
     file << "#include <stdlib.h>\n"
@@ -112,7 +117,7 @@
       file << @plugins.run(:instance_typedefs, function)
       file << "\n} CMOCK_#{function[:name]}_CALL_INSTANCE;\n\n"
     end
-    file << "static struct #{@mock_name}Instance\n{\n"
+    file << "static struct #{@mock_ident}Instance\n{\n"
     if (functions.size == 0)
       file << "  unsigned char placeHolder;\n"
     end
@@ -133,7 +138,7 @@
   end
   
   def create_mock_verify_function(file, functions)
-    file << "void #{@mock_name}_Verify(void)\n{\n"
+    file << "void #{@mock_ident}_Verify(void)\n{\n"
     verifications = functions.collect {|function| @plugins.run(:mock_verify, function)}.join
     file << "  UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM;\n" unless verifications.empty?
     file << verifications
@@ -141,13 +146,13 @@
   end
   
   def create_mock_init_function(file)
-    file << "void #{@mock_name}_Init(void)\n{\n"
-    file << "  #{@mock_name}_Destroy();\n"
+    file << "void #{@mock_ident}_Init(void)\n{\n"
+    file << "  #{@mock_ident}_Destroy();\n"
     file << "}\n\n"
   end
   
   def create_mock_destroy_function(file, functions)
-    file << "void #{@mock_name}_Destroy(void)\n{\n"
+    file << "void #{@mock_ident}_Destroy(void)\n{\n"
     file << "  CMock_Guts_MemFreeAll();\n"
     file << "  memset(&Mock, 0, sizeof(Mock));\n"
     file << functions.collect {|function| @plugins.run(:mock_destroy, function)}.join
