diff --git a/lib/zip_close.c b/lib/zip_close.c
index 4f5fc2c..d764b89 100644
--- a/lib/zip_close.c
+++ b/lib/zip_close.c
@@ -81,9 +81,6 @@
     }
 
     if (survivors > za->nentry) {
-#ifdef _WIN32
-        printf("invalid case close-1\n");
-#endif
 	zip_error_set(&za->error, ZIP_ER_INTERNAL, 0);
 	return -1;
     }
@@ -103,9 +100,6 @@
 
 	if (j >= survivors) {
 	    free(filelist);
-#ifdef _WIN32
-            printf("invalid case close-2\n");
-#endif
 	    zip_error_set(&za->error, ZIP_ER_INTERNAL, 0);
 	    return -1;
 	}
@@ -115,9 +109,6 @@
     }
     if (j < survivors) {
 	free(filelist);
-#ifdef _WIN32
-        printf("invalid case close-3\n");
-#endif
 	zip_error_set(&za->error, ZIP_ER_INTERNAL, 0);
 	return -1;
     }
@@ -507,9 +498,6 @@
     }
 
     if ((st.valid & (ZIP_STAT_COMP_METHOD | ZIP_STAT_CRC | ZIP_STAT_SIZE)) != (ZIP_STAT_COMP_METHOD | ZIP_STAT_CRC | ZIP_STAT_SIZE)) {
-#ifdef _WIN32
-        printf("invalid case close-4\n");
-#endif
 	zip_error_set(&za->error, ZIP_ER_INTERNAL, 0);
 	return -1;
     }
@@ -531,9 +519,6 @@
 
     if (is_zip64 != ret) {
 	/* Zip64 mismatch between preliminary file header written before data and final file header written afterwards */
-#ifdef _WIN32
-        printf("invalid case close-5\n");
-#endif
 	zip_error_set(&za->error, ZIP_ER_INTERNAL, 0);
 	return -1;
     }
@@ -704,9 +689,6 @@
     }
 
     if (!_zip_buffer_ok(buffer)) {
-#ifdef _WIN32
-        printf("invalid case close-6\n");
-#endif
 	zip_error_set(&za->error, ZIP_ER_INTERNAL, 0);
 	ret = -1;
     }
diff --git a/lib/zip_source_file_common.c b/lib/zip_source_file_common.c
index d8d0181..602e609 100644
--- a/lib/zip_source_file_common.c
+++ b/lib/zip_source_file_common.c
@@ -62,27 +62,17 @@
     }
 
     if (ops->close == NULL || ops->read == NULL || ops->seek == NULL || ops->stat == NULL) {
-#ifdef _WIN32
-        printf("invalid case 1\n");
-        printf("ops=%p, close=%p (%d), read=%p (%d), seek=%p (%d), stat=%p (%d)\n", ops, ops->close, ops->close == NULL, ops->read, ops->read == NULL, ops->seek, ops->seek == NULL, ops->stat, ops->stat == NULL);
-#endif
 	zip_error_set(error, ZIP_ER_INTERNAL, 0);
 	return NULL;
     }
 
     if (ops->write != NULL && (ops->commit_write == NULL || ops->create_temp_output == NULL || ops->remove == NULL || ops->rollback_write == NULL || ops->tell == NULL)) {
-        #ifdef _WIN32
-                printf("invalid case 2\n");
-        #endif
 	zip_error_set(error, ZIP_ER_INTERNAL, 0);
 	return NULL;
     }
 
     if (fname != NULL) {
 	if (ops->open == NULL || ops->string_duplicate == NULL) {
-            #ifdef _WIN32
-                    printf("invalid case 3\n");
-            #endif
 	    zip_error_set(error, ZIP_ER_INTERNAL, 0);
 	    return NULL;
 	}
diff --git a/lib/zip_source_file_win32_ansi.c b/lib/zip_source_file_win32_ansi.c
index 39cc8a7..0909519 100644
--- a/lib/zip_source_file_win32_ansi.c
+++ b/lib/zip_source_file_win32_ansi.c
@@ -63,8 +63,6 @@
     return NULL;
     }
 
-    printf("creating ansi source: ");
-    printf("ops=%p, close=%p, read=%p, seek=%p, stat=%p, write=%p\n", &_zip_source_file_win32_write_ops, _zip_source_file_win32_write_ops.close, _zip_source_file_win32_write_ops.read, _zip_source_file_win32_write_ops.seek, _zip_source_file_win32_write_ops.stat, _zip_source_file_win32_write_ops.write);
     return zip_source_file_common_new(fname, NULL, start, length, NULL, &_zip_source_file_win32_write_ops, &ops_ansi, error);
 }
 
diff --git a/lib/zip_source_file_win32_utf16.c b/lib/zip_source_file_win32_utf16.c
index 622f801..098da4e 100644
--- a/lib/zip_source_file_win32_utf16.c
+++ b/lib/zip_source_file_win32_utf16.c
@@ -70,9 +70,6 @@
     }
 
 
-    printf("creating utf16 source: ");
-    printf("ops=%p, close=%p, read=%p, seek=%p, stat=%p, write=%p\n", &_zip_source_file_win32_write_ops, _zip_source_file_win32_write_ops.close, _zip_source_file_win32_write_ops.read, _zip_source_file_win32_write_ops.seek, _zip_source_file_win32_write_ops.stat, _zip_source_file_win32_write_ops.write);
-
     return zip_source_file_common_new((const char *)fname, NULL, start, length, NULL, &_zip_source_file_win32_write_ops, &ops_utf16, error);
 }
 
