diff --git a/Misc/NEWS b/Misc/NEWS
index c62905a..4872978 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,7 +12,7 @@
 Core and Builtins
 -----------------
 
-- Fixed a broken comment in Objects/frameobject.c. Python is now C89 compatible
+- Fixed C99 style comments in several files. Python is now C89 compatible
   again.
 
 Library
diff --git a/Modules/_ctypes/libffi/src/x86/ffi.c b/Modules/_ctypes/libffi/src/x86/ffi.c
index 767effb..60d7f47 100644
--- a/Modules/_ctypes/libffi/src/x86/ffi.c
+++ b/Modules/_ctypes/libffi/src/x86/ffi.c
@@ -388,10 +388,10 @@
     return FFI_BAD_ABI;
   }
 
-  // we currently don't support certain kinds of arguments for raw
+  /* we currently don't support certain kinds of arguments for raw
   // closures.  This should be implemented by a separate assembly language
   // routine, since it would require argument processing, something we
-  // don't do now for performance.
+  // don't do now for performance. */
 
   for (i = cif->nargs-1; i >= 0; i--)
     {
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 628780f..d5d80c5 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -107,7 +107,7 @@
     tv->tv_usec = fmod(d, 1.0) * 1000000.0;
 }
 
-static inline double
+Py_LOCAL_INLINE(double)
 double_from_timeval(struct timeval *tv)
 {
     return tv->tv_sec + (double)(tv->tv_usec / 1000000.0);
diff --git a/Modules/tkappinit.c b/Modules/tkappinit.c
index 1c67632..de04b0d 100644
--- a/Modules/tkappinit.c
+++ b/Modules/tkappinit.c
@@ -71,7 +71,7 @@
 #endif
 
 #ifdef WITH_XXX
-		// Initialize modules that don't require Tk
+		/* Initialize modules that don't require Tk */
 #endif
 
 	_tkinter_skip_tk_init =	Tcl_GetVar(interp, "_tkinter_skip_tk_init", TCL_GLOBAL_ONLY);
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 524859c..f8601d8 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -115,19 +115,19 @@
 /* Fast detection of the most frequent whitespace characters */
 const unsigned char _Py_ascii_whitespace[] = {
 	0, 0, 0, 0, 0, 0, 0, 0,
-//     case 0x0009: /* HORIZONTAL TABULATION */
-//     case 0x000A: /* LINE FEED */
-//     case 0x000B: /* VERTICAL TABULATION */
-//     case 0x000C: /* FORM FEED */
-//     case 0x000D: /* CARRIAGE RETURN */
+/*     case 0x0009: * HORIZONTAL TABULATION */
+/*     case 0x000A: * LINE FEED */
+/*     case 0x000B: * VERTICAL TABULATION */
+/*     case 0x000C: * FORM FEED */
+/*     case 0x000D: * CARRIAGE RETURN */
 	0, 1, 1, 1, 1, 1, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
-//     case 0x001C: /* FILE SEPARATOR */
-//     case 0x001D: /* GROUP SEPARATOR */
-//     case 0x001E: /* RECORD SEPARATOR */
-//     case 0x001F: /* UNIT SEPARATOR */
+/*     case 0x001C: * FILE SEPARATOR */
+/*     case 0x001D: * GROUP SEPARATOR */
+/*     case 0x001E: * RECORD SEPARATOR */
+/*     case 0x001F: * UNIT SEPARATOR */
 	0, 0, 0, 0, 1, 1, 1, 1,
-//     case 0x0020: /* SPACE */
+/*     case 0x0020: * SPACE */
 	1, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
@@ -146,13 +146,13 @@
 /* Same for linebreaks */
 static unsigned char ascii_linebreak[] = {
 	0, 0, 0, 0, 0, 0, 0, 0,
-//         0x000A, /* LINE FEED */
-//         0x000D, /* CARRIAGE RETURN */
+/*         0x000A, * LINE FEED */
+/*         0x000D, * CARRIAGE RETURN */
 	0, 0, 1, 0, 0, 1, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
-//         0x001C, /* FILE SEPARATOR */
-//         0x001D, /* GROUP SEPARATOR */
-//         0x001E, /* RECORD SEPARATOR */
+/*         0x001C, * FILE SEPARATOR */
+/*         0x001D, * GROUP SEPARATOR */
+/*         0x001E, * RECORD SEPARATOR */
 	0, 0, 0, 0, 1, 1, 1, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 331ad6c..6a970bb 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -377,7 +377,7 @@
         }
     }
 
-    if (rc == 1)  // Already warned for this module. */
+    if (rc == 1)  /* Already warned for this module. */
         goto return_none;
     if (rc == 0) {
         PyObject *show_fxn = get_warnings_attr("showwarning");
@@ -800,8 +800,8 @@
         warn_doc},
     {"warn_explicit", (PyCFunction)warnings_warn_explicit,
         METH_VARARGS | METH_KEYWORDS, warn_explicit_doc},
-    // XXX(brett.cannon): add showwarning?
-    // XXX(brett.cannon): Reasonable to add formatwarning?
+    /* XXX(brett.cannon): add showwarning? */
+    /* XXX(brett.cannon): Reasonable to add formatwarning? */
     {NULL, NULL}	        /* sentinel */
 };
 
