patch 8.1.2387: using old C style comments

Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
diff --git a/src/if_python3.c b/src/if_python3.c
index 26b973b..8c22514 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -22,13 +22,12 @@
  * Adaptations to support both python3.x and python2.x
  */
 
-/* uncomment this if used with the debug version of python */
-/* #define Py_DEBUG */
-/* Note: most of time you can add -DPy_DEBUG to CFLAGS in place of uncommenting
- */
-/* uncomment this if used with the debug version of python, but without its
- * allocator */
-/* #define Py_DEBUG_NO_PYMALLOC */
+// uncomment this if used with the debug version of python
+// #define Py_DEBUG
+// Note: most of time you can add -DPy_DEBUG to CFLAGS in place of uncommenting
+// uncomment this if used with the debug version of python, but without its
+// allocator
+// #define Py_DEBUG_NO_PYMALLOC
 
 #include "vim.h"
 
@@ -56,30 +55,30 @@
 # undef HAVE_PUTENV
 #endif
 #ifdef HAVE_STDARG_H
-# undef HAVE_STDARG_H   /* Python's config.h defines it as well. */
+# undef HAVE_STDARG_H   // Python's config.h defines it as well.
 #endif
-#ifdef _POSIX_C_SOURCE  /* defined in feature.h */
+#ifdef _POSIX_C_SOURCE  // defined in feature.h
 # undef _POSIX_C_SOURCE
 #endif
 #ifdef _XOPEN_SOURCE
-# undef _XOPEN_SOURCE	/* pyconfig.h defines it as well. */
+# undef _XOPEN_SOURCE	// pyconfig.h defines it as well.
 #endif
 
 #define PY_SSIZE_T_CLEAN
 
 #include <Python.h>
 
-#undef main /* Defined in python.h - aargh */
-#undef HAVE_FCNTL_H /* Clash with os_win32.h */
+#undef main // Defined in python.h - aargh
+#undef HAVE_FCNTL_H // Clash with os_win32.h
 
-/* The "surrogateescape" error handler is new in Python 3.1 */
+// The "surrogateescape" error handler is new in Python 3.1
 #if PY_VERSION_HEX >= 0x030100f0
 # define CODEC_ERROR_HANDLER "surrogateescape"
 #else
 # define CODEC_ERROR_HANDLER NULL
 #endif
 
-/* Python 3 does not support CObjects, always use Capsules */
+// Python 3 does not support CObjects, always use Capsules
 #define PY_USE_CAPSULE
 
 #define PyInt Py_ssize_t
@@ -432,9 +431,9 @@
 static void(*py3_PyObject_GC_UnTrack)(void *);
 static int (*py3_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *);
 
-static HINSTANCE hinstPy3 = 0; /* Instance of python.dll */
+static HINSTANCE hinstPy3 = 0; // Instance of python.dll
 
-/* Imported exception objects */
+// Imported exception objects
 static PyObject *p3imp_PyExc_AttributeError;
 static PyObject *p3imp_PyExc_IndexError;
 static PyObject *p3imp_PyExc_KeyError;
@@ -664,9 +663,9 @@
 				 (PYTHON_PROC *)&py3_PyUnicode_AsEncodedString;
 
 # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON)
-    /* Can't have Python and Python3 loaded at the same time.
-     * It cause a crash, because RTLD_GLOBAL is needed for
-     * standard C extension libraries of one or both python versions. */
+    // Can't have Python and Python3 loaded at the same time.
+    // It cause a crash, because RTLD_GLOBAL is needed for
+    // standard C extension libraries of one or both python versions.
     if (python_loaded())
     {
 	if (verbose)
@@ -699,8 +698,8 @@
 	}
     }
 
-    /* Load unicode functions separately as only the ucs2 or the ucs4 functions
-     * will be present in the library. */
+    // Load unicode functions separately as only the ucs2 or the ucs4 functions
+    // will be present in the library.
 # if PY_VERSION_HEX >= 0x030300f0
     *ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString");
     *ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode");
@@ -746,7 +745,8 @@
     return py3_runtime_link_init((char *)p_py3dll, verbose) == OK;
 }
 
-/* Load the standard Python exceptions - don't import the symbols from the
+/*
+ * Load the standard Python exceptions - don't import the symbols from the
  * DLL, as this can cause errors (importing data symbols is not reliable).
  */
     static void
@@ -776,7 +776,7 @@
     Py_XINCREF(p3imp_PyExc_OverflowError);
     Py_XDECREF(exmod);
 }
-#endif /* DYNAMIC_PYTHON3 */
+#endif // DYNAMIC_PYTHON3
 
 static int py3initialised = 0;
 #define PYINITIALISED py3initialised
@@ -843,22 +843,20 @@
 
 #define PY3OBJ_DELETED(obj) (obj->ob_base.ob_refcnt<=0)
 
-/******************************************************
- * Internal function prototypes.
- */
+///////////////////////////////////////////////////////
+// Internal function prototypes.
 
 static PyObject *Py3Init_vim(void);
 
-/******************************************************
- * 1. Python interpreter main program.
- */
+///////////////////////////////////////////////////////
+// 1. Python interpreter main program.
 
     void
 python3_end(void)
 {
     static int recurse = 0;
 
-    /* If a crash occurs while doing this, don't try again. */
+    // If a crash occurs while doing this, don't try again.
     if (recurse != 0)
 	return;
 
@@ -870,7 +868,7 @@
 #endif
     if (Py_IsInitialized())
     {
-	/* acquire lock before finalizing */
+	// acquire lock before finalizing
 	PyGILState_Ensure();
 
 	Py_Finalize();
@@ -912,7 +910,7 @@
 	{
 	    size_t len = mbstowcs(NULL, (char *)p_py3home, 0) + 1;
 
-	    /* The string must not change later, make a copy in static memory. */
+	    // The string must not change later, make a copy in static memory.
 	    py_home_buf = ALLOC_MULT(wchar_t, len);
 	    if (py_home_buf != NULL && mbstowcs(
 			    py_home_buf, (char *)p_py3home, len) != (size_t)-1)
@@ -927,10 +925,10 @@
 
 	Py_Initialize();
 
-	/* Initialise threads, and below save the state using
-	 * PyEval_SaveThread.  Without the call to PyEval_SaveThread, thread
-	 * specific state (such as the system trace hook), will be lost
-	 * between invocations of Python code. */
+	// Initialise threads, and below save the state using
+	// PyEval_SaveThread.  Without the call to PyEval_SaveThread, thread
+	// specific state (such as the system trace hook), will be lost
+	// between invocations of Python code.
 	PyEval_InitThreads();
 #ifdef DYNAMIC_PYTHON3
 	get_py3_exceptions();
@@ -941,22 +939,20 @@
 
 	globals = PyModule_GetDict(PyImport_AddModule("__main__"));
 
-	/* Remove the element from sys.path that was added because of our
-	 * argv[0] value in Py3Init_vim().  Previously we used an empty
-	 * string, but depending on the OS we then get an empty entry or
-	 * the current directory in sys.path.
-	 * Only after vim has been imported, the element does exist in
-	 * sys.path.
-	 */
+	// Remove the element from sys.path that was added because of our
+	// argv[0] value in Py3Init_vim().  Previously we used an empty
+	// string, but depending on the OS we then get an empty entry or
+	// the current directory in sys.path.
+	// Only after vim has been imported, the element does exist in
+	// sys.path.
 	PyRun_SimpleString("import vim; import sys; sys.path = list(filter(lambda x: not x.endswith('must>not&exist'), sys.path))");
 
-	/* lock is created and acquired in PyEval_InitThreads() and thread
-	 * state is created in Py_Initialize()
-	 * there _PyGILState_NoteThreadState() also sets gilcounter to 1
-	 * (python must have threads enabled!)
-	 * so the following does both: unlock GIL and save thread state in TLS
-	 * without deleting thread state
-	 */
+	// lock is created and acquired in PyEval_InitThreads() and thread
+	// state is created in Py_Initialize()
+	// there _PyGILState_NoteThreadState() also sets gilcounter to 1
+	// (python must have threads enabled!)
+	// so the following does both: unlock GIL and save thread state in TLS
+	// without deleting thread state
 	PyEval_SaveThread();
 
 	py3initialised = 1;
@@ -965,11 +961,10 @@
     return 0;
 
 fail:
-    /* We call PythonIO_Flush() here to print any Python errors.
-     * This is OK, as it is possible to call this function even
-     * if PythonIO_Init_io() has not completed successfully (it will
-     * not do anything in this case).
-     */
+    // We call PythonIO_Flush() here to print any Python errors.
+    // This is OK, as it is possible to call this function even
+    // if PythonIO_Init_io() has not completed successfully (it will
+    // not do anything in this case).
     PythonIO_Flush();
     return -1;
 }
@@ -995,16 +990,16 @@
 
     init_range(arg);
 
-    Python_Release_Vim();	    /* leave vim */
+    Python_Release_Vim();	    // leave Vim
 
 #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
-    /* Python only works properly when the LC_NUMERIC locale is "C". */
+    // Python only works properly when the LC_NUMERIC locale is "C".
     saved_locale = setlocale(LC_NUMERIC, NULL);
     if (saved_locale == NULL || STRCMP(saved_locale, "C") == 0)
 	saved_locale = NULL;
     else
     {
-	/* Need to make a copy, value may change when setting new locale. */
+	// Need to make a copy, value may change when setting new locale.
 	saved_locale = (char *)vim_strsave((char_u *)saved_locale);
 	(void)setlocale(LC_NUMERIC, "C");
     }
@@ -1012,8 +1007,8 @@
 
     pygilstate = PyGILState_Ensure();
 
-    /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
-     * SyntaxError (unicode error). */
+    // PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+    // SyntaxError (unicode error).
     cmdstr = PyUnicode_Decode(cmd, strlen(cmd),
 					(char *)ENC_OPT, CODEC_ERROR_HANDLER);
     cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER);
@@ -1032,11 +1027,11 @@
     }
 #endif
 
-    Python_Lock_Vim();		    /* enter vim */
+    Python_Lock_Vim();		    // enter Vim
     PythonIO_Flush();
 
 theend:
-    return;	    /* keeps lint happy */
+    return;	    // keeps lint happy
 }
 
 /*
@@ -1077,22 +1072,21 @@
     if (p_pyx == 0)
 	p_pyx = 3;
 
-    /* Have to do it like this. PyRun_SimpleFile requires you to pass a
-     * stdio file pointer, but Vim and the Python DLL are compiled with
-     * different options under Windows, meaning that stdio pointers aren't
-     * compatible between the two. Yuk.
-     *
-     * construct: exec(compile(open('a_filename', 'rb').read(), 'a_filename', 'exec'))
-     *
-     * Using bytes so that Python can detect the source encoding as it normally
-     * does. The doc does not say "compile" accept bytes, though.
-     *
-     * We need to escape any backslashes or single quotes in the file name, so that
-     * Python won't mangle the file name.
-     */
+    // Have to do it like this. PyRun_SimpleFile requires you to pass a
+    // stdio file pointer, but Vim and the Python DLL are compiled with
+    // different options under Windows, meaning that stdio pointers aren't
+    // compatible between the two. Yuk.
+    //
+    // construct: exec(compile(open('a_filename', 'rb').read(), 'a_filename', 'exec'))
+    //
+    // Using bytes so that Python can detect the source encoding as it normally
+    // does. The doc does not say "compile" accept bytes, though.
+    //
+    // We need to escape any backslashes or single quotes in the file name, so that
+    // Python won't mangle the file name.
 
     strcpy(buffer, "exec(compile(open('");
-    p = buffer + 19; /* size of "exec(compile(open('" */
+    p = buffer + 19; // size of "exec(compile(open('"
 
     for (i=0; i<2; ++i)
     {
@@ -1103,7 +1097,7 @@
 		*p++ = '\\';
 	    *p++ = *file++;
 	}
-	/* If we didn't finish the file name, we hit a buffer overflow */
+	// If we didn't finish the file name, we hit a buffer overflow
 	if (*file != '\0')
 	    return;
 	if (i==0)
@@ -1119,7 +1113,7 @@
     }
 
 
-    /* Execute the file */
+    // Execute the file
     DoPyCommand(buffer,
 	    (rangeinitializer) init_range_cmd,
 	    (runner) run_cmd,
@@ -1138,12 +1132,10 @@
 	    (void *)eap);
 }
 
-/******************************************************
- * 2. Python output stream: writes output via [e]msg().
- */
+///////////////////////////////////////////////////////
+// 2. Python output stream: writes output via [e]msg().
 
-/* Implementation functions
- */
+// Implementation functions
 
     static PyObject *
 OutputGetattro(PyObject *self, PyObject *nameobj)
@@ -1168,28 +1160,24 @@
     return OutputSetattr((OutputObject *)(self), name, val);
 }
 
-/******************************************************
- * 3. Implementation of the Vim module for Python
- */
+///////////////////////////////////////////////////////
+// 3. Implementation of the Vim module for Python
 
-/* Window type - Implementation functions
- * --------------------------------------
- */
+// Window type - Implementation functions
+// --------------------------------------
 
 #define WindowType_Check(obj) ((obj)->ob_base.ob_type == &WindowType)
 
-/* Buffer type - Implementation functions
- * --------------------------------------
- */
+// Buffer type - Implementation functions
+// --------------------------------------
 
 #define BufferType_Check(obj) ((obj)->ob_base.ob_type == &BufferType)
 
 static PyObject* BufferSubscript(PyObject *self, PyObject *idx);
 static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
 
-/* Line range type - Implementation functions
- * --------------------------------------
- */
+// Line range type - Implementation functions
+// --------------------------------------
 
 #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType)
 
@@ -1197,21 +1185,20 @@
 static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *);
 static Py_ssize_t RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
 
-/* Current objects type - Implementation functions
- * -----------------------------------------------
- */
+// Current objects type - Implementation functions
+// -----------------------------------------------
 
 static PySequenceMethods BufferAsSeq = {
-    (lenfunc)		BufferLength,	    /* sq_length,    len(x)   */
-    (binaryfunc)	0,		    /* sq_concat,    x+y      */
-    (ssizeargfunc)	0,		    /* sq_repeat,    x*n      */
-    (ssizeargfunc)	BufferItem,	    /* sq_item,      x[i]     */
-    0,					    /* was_sq_slice,	 x[i:j]   */
-    0,					    /* sq_ass_item,  x[i]=v   */
-    0,					    /* sq_ass_slice, x[i:j]=v */
-    0,					    /* sq_contains */
-    0,					    /* sq_inplace_concat */
-    0,					    /* sq_inplace_repeat */
+    (lenfunc)		BufferLength,	    // sq_length,    len(x)
+    (binaryfunc)	0,		    // sq_concat,    x+y
+    (ssizeargfunc)	0,		    // sq_repeat,    x*n
+    (ssizeargfunc)	BufferItem,	    // sq_item,      x[i]
+    0,					    // was_sq_slice,	 x[i:j]
+    0,					    // sq_ass_item,  x[i]=v
+    0,					    // sq_ass_slice, x[i:j]=v
+    0,					    // sq_contains
+    0,					    // sq_inplace_concat
+    0,					    // sq_inplace_repeat
 };
 
 static PyMappingMethods BufferAsMapping = {
@@ -1221,8 +1208,7 @@
 };
 
 
-/* Buffer object
- */
+// Buffer object
 
     static PyObject *
 BufferGetattro(PyObject *self, PyObject *nameobj)
@@ -1252,7 +1238,7 @@
     return BufferSetattr((BufferObject *)(self), name, val);
 }
 
-/******************/
+//////////////////
 
     static PyObject *
 BufferSubscript(PyObject *self, PyObject* idx)
@@ -1315,16 +1301,16 @@
 }
 
 static PySequenceMethods RangeAsSeq = {
-    (lenfunc)		RangeLength,	 /* sq_length,	  len(x)   */
-    (binaryfunc)	0,		 /* RangeConcat, sq_concat,  x+y   */
-    (ssizeargfunc)	0,		 /* RangeRepeat, sq_repeat,  x*n   */
-    (ssizeargfunc)	RangeItem,	 /* sq_item,	  x[i]	   */
-    0,					 /* was_sq_slice,     x[i:j]   */
-    (ssizeobjargproc)	RangeAsItem,	 /* sq_as_item,  x[i]=v   */
-    0,					 /* sq_ass_slice, x[i:j]=v */
-    0,					 /* sq_contains */
-    0,					 /* sq_inplace_concat */
-    0,					 /* sq_inplace_repeat */
+    (lenfunc)		RangeLength,	 // sq_length,	  len(x)
+    (binaryfunc)	0,		 // RangeConcat, sq_concat,  x+y
+    (ssizeargfunc)	0,		 // RangeRepeat, sq_repeat,  x*n
+    (ssizeargfunc)	RangeItem,	 // sq_item,	  x[i]
+    0,					 // was_sq_slice,     x[i:j]
+    (ssizeobjargproc)	RangeAsItem,	 // sq_as_item,  x[i]=v
+    0,					 // sq_ass_slice, x[i:j]=v
+    0,					 // sq_contains
+    0,					 // sq_inplace_concat
+    0,					 // sq_inplace_repeat
 };
 
 static PyMappingMethods RangeAsMapping = {
@@ -1333,8 +1319,7 @@
     /* mp_ass_subscript */ (objobjargproc)RangeAsSubscript,
 };
 
-/* Line range object - Implementation
- */
+// Line range object - Implementation
 
     static PyObject *
 RangeGetattro(PyObject *self, PyObject *nameobj)
@@ -1349,7 +1334,7 @@
 	return PyObject_GenericGetAttr(self, nameobj);
 }
 
-/****************/
+////////////////
 
     static Py_ssize_t
 RangeAsItem(PyObject *self, Py_ssize_t n, PyObject *val)
@@ -1420,8 +1405,7 @@
     }
 }
 
-/* TabPage object - Implementation
- */
+// TabPage object - Implementation
 
     static PyObject *
 TabPageGetattro(PyObject *self, PyObject *nameobj)
@@ -1443,8 +1427,7 @@
 	return PyObject_GenericGetAttr(self, nameobj);
 }
 
-/* Window object - Implementation
- */
+// Window object - Implementation
 
     static PyObject *
 WindowGetattro(PyObject *self, PyObject *nameobj)
@@ -1474,39 +1457,38 @@
     return WindowSetattr((WindowObject *)(self), name, val);
 }
 
-/* Tab page list object - Definitions
- */
+// Tab page list object - Definitions
 
 static PySequenceMethods TabListAsSeq = {
-    (lenfunc)	     TabListLength,	    /* sq_length,    len(x)   */
-    (binaryfunc)     0,			    /* sq_concat,    x+y      */
-    (ssizeargfunc)   0,			    /* sq_repeat,    x*n      */
-    (ssizeargfunc)   TabListItem,	    /* sq_item,      x[i]     */
-    0,					    /* sq_slice,     x[i:j]   */
-    (ssizeobjargproc)0,			    /* sq_as_item,  x[i]=v   */
-    0,					    /* sq_ass_slice, x[i:j]=v */
-    0,					    /* sq_contains */
-    0,					    /* sq_inplace_concat */
-    0,					    /* sq_inplace_repeat */
+    (lenfunc)	     TabListLength,	    // sq_length,    len(x)
+    (binaryfunc)     0,			    // sq_concat,    x+y
+    (ssizeargfunc)   0,			    // sq_repeat,    x*n
+    (ssizeargfunc)   TabListItem,	    // sq_item,      x[i]
+    0,					    // sq_slice,     x[i:j]
+    (ssizeobjargproc)0,			    // sq_as_item,  x[i]=v
+    0,					    // sq_ass_slice, x[i:j]=v
+    0,					    // sq_contains
+    0,					    // sq_inplace_concat
+    0,					    // sq_inplace_repeat
 };
 
-/* Window list object - Definitions
- */
+// Window list object - Definitions
 
 static PySequenceMethods WinListAsSeq = {
-    (lenfunc)	     WinListLength,	    /* sq_length,    len(x)   */
-    (binaryfunc)     0,			    /* sq_concat,    x+y      */
-    (ssizeargfunc)   0,			    /* sq_repeat,    x*n      */
-    (ssizeargfunc)   WinListItem,	    /* sq_item,      x[i]     */
-    0,					    /* sq_slice,     x[i:j]   */
-    (ssizeobjargproc)0,			    /* sq_as_item,  x[i]=v   */
-    0,					    /* sq_ass_slice, x[i:j]=v */
-    0,					    /* sq_contains */
-    0,					    /* sq_inplace_concat */
-    0,					    /* sq_inplace_repeat */
+    (lenfunc)	     WinListLength,	    // sq_length,    len(x)
+    (binaryfunc)     0,			    // sq_concat,    x+y
+    (ssizeargfunc)   0,			    // sq_repeat,    x*n
+    (ssizeargfunc)   WinListItem,	    // sq_item,      x[i]
+    0,					    // sq_slice,     x[i:j]
+    (ssizeobjargproc)0,			    // sq_as_item,  x[i]=v
+    0,					    // sq_ass_slice, x[i:j]=v
+    0,					    // sq_contains
+    0,					    // sq_inplace_concat
+    0,					    // sq_inplace_repeat
 };
 
-/* Current items object - Implementation
+/*
+ * Current items object - Implementation
  */
     static PyObject *
 CurrentGetattro(PyObject *self, PyObject *nameobj)
@@ -1525,8 +1507,7 @@
     return CurrentSetattr(self, name, value);
 }
 
-/* Dictionary object - Definitions
- */
+// Dictionary object - Definitions
 
     static PyObject *
 DictionaryGetattro(PyObject *self, PyObject *nameobj)
@@ -1550,8 +1531,7 @@
     return DictionarySetattr((DictionaryObject *)(self), name, val);
 }
 
-/* List object - Definitions
- */
+// List object - Definitions
 
     static PyObject *
 ListGetattro(PyObject *self, PyObject *nameobj)
@@ -1571,8 +1551,7 @@
     return ListSetattr((ListObject *)(self), name, val);
 }
 
-/* Function object - Definitions
- */
+// Function object - Definitions
 
     static PyObject *
 FunctionGetattro(PyObject *self, PyObject *nameobj)
@@ -1589,8 +1568,7 @@
 	return PyObject_GenericGetAttr(self, nameobj);
 }
 
-/* External interface
- */
+// External interface
 
     void
 python3_buffer_free(buf_T *buf)
@@ -1628,13 +1606,13 @@
     static PyObject *
 Py3Init_vim(void)
 {
-    /* The special value is removed from sys.path in Python3_Init(). */
+    // The special value is removed from sys.path in Python3_Init().
     static wchar_t *(argv[2]) = {L"/must>not&exist/foo", NULL};
 
     if (init_types())
 	return NULL;
 
-    /* Set sys.argv[] to avoid a crash in warn(). */
+    // Set sys.argv[] to avoid a crash in warn().
     PySys_SetArgv(1, argv);
 
     if ((vim_module = PyModule_Create(&vimmodule)) == NULL)
@@ -1649,11 +1627,11 @@
     return vim_module;
 }
 
-/*************************************************************************
- * 4. Utility functions for handling the interface between Vim and Python.
- */
+//////////////////////////////////////////////////////////////////////////
+// 4. Utility functions for handling the interface between Vim and Python.
 
-/* Convert a Vim line into a Python string.
+/*
+ * Convert a Vim line into a Python string.
  * All internal newlines are replaced by null characters.
  *
  * On errors, the Python exception data is set, and NULL is returned.