diff --git a/Modules/pcremodule.c b/Modules/pcremodule.c
index 40efd03..60b7029 100644
--- a/Modules/pcremodule.c
+++ b/Modules/pcremodule.c
@@ -257,35 +257,27 @@
 	case('t'):
 		*indexptr=index;
 		return Py_BuildValue("c", (char)9);
-		break;
 	case('n'):
 		*indexptr = index;
 		return Py_BuildValue("c", (char)10);
-		break;
 	case('v'):
 		*indexptr = index;
 		return Py_BuildValue("c", (char)11);
-		break;
 	case('r'):
 		*indexptr = index;
 		return Py_BuildValue("c", (char)13);
-		break;
 	case('f'):
 		*indexptr = index;
 		return Py_BuildValue("c", (char)12);
-		break;
 	case('a'):
 		*indexptr = index;
 		return Py_BuildValue("c", (char)7);
-		break;
 	case('b'):
 		*indexptr=index;
 		return Py_BuildValue("c", (char)8);
-		break;
 	case('\\'):
 		*indexptr=index;
 		return Py_BuildValue("c", '\\');
-		break;
 
 	case('x'):
 	{
@@ -468,7 +460,6 @@
 		*typeptr = STRING;
 		*indexptr = index;
 		return Py_BuildValue("s#", pattern+index-2, 2);
-		break;
 	}
 }
 
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index 5569de6..fc892d0 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -95,13 +95,11 @@
                       "Out of memory while compressing data");
       free(output);
       return NULL;
-      break;
     case(Z_STREAM_ERROR):
       PyErr_SetString(ZlibError,
                       "Bad compression level");
       free(output);
       return NULL;
-      break;
     default:
       {
 	if (zst.msg == Z_NULL)
@@ -114,7 +112,6 @@
         free(output);
         return NULL;
       }
-      break;
     }
  
   err=deflate(&zst, Z_FINISH);
@@ -290,17 +287,14 @@
     {
     case (Z_OK):
       return (PyObject*)self;
-      break;
     case (Z_MEM_ERROR):
       PyErr_SetString(PyExc_MemoryError,
                       "Can't allocate memory for compression object");
       return NULL;
-      break;
     case(Z_STREAM_ERROR):
       PyErr_SetString(PyExc_ValueError,
                       "Invalid initialization option");
       return NULL;
-      break;
     default:
       {
 	if (self->zst.msg == Z_NULL)
@@ -312,7 +306,6 @@
 			 "Error %i while creating compression object: %.200s",
 			 err, self->zst.msg);  
 	return NULL;
-	break;      
       }
     }
 }
@@ -337,17 +330,14 @@
   {
     case (Z_OK):
       return (PyObject*)self;
-      break;
     case(Z_STREAM_ERROR):
       PyErr_SetString(PyExc_ValueError,
                       "Invalid initialization option");
       return NULL;
-      break;
     case (Z_MEM_ERROR):
       PyErr_SetString(PyExc_MemoryError,
                       "Can't allocate memory for decompression object");
       return NULL;
-      break;
     default:
     {
 	if (self->zst.msg == Z_NULL)
@@ -359,7 +349,6 @@
 			 "Error %i while creating decompression object: %.200s",
 			 err, self->zst.msg);  
 	return NULL;
-	break;      
     }
   }
 }
