Lenard Lindstrom avatar Lenard Lindstrom committed b83d8cc

Apply overlooked issue #109 changes to color.c

The Py_ssize_t oriented "n" format adds the possibility of an OverflowError
being thrown. For backwards compatibility, the OverflowError exception is
intercepted and replaced with a ValueError.

Comments (0)

Files changed (1)

 {
     Py_ssize_t clength;
 
-    if (!PyArg_ParseTuple (args, "k", &clength))
-        return NULL;
+#if PY_VERSION_HEX < 0x02050000
+#define FORMAT_STRING "k"
+#else
+#define FORMAT_STRING "n"
+#endif
+
+    if (!PyArg_ParseTuple (args, FORMAT_STRING, &clength)) {
+        if (!PyErr_ExceptionMatches(PyExc_OverflowError)) {
+            return NULL;
+        }
+        /* OverflowError also means the value is out-of-range */
+        PyErr_Clear();
+        clength = PY_SSIZE_T_MAX;
+    }
 
     if (clength > 4 || clength < 1) {
         return RAISE (PyExc_ValueError, "Length needs to be 1,2,3, or 4.");
     color->len = clength;
 
     Py_RETURN_NONE;
+
+#undef FORMAT_STRING
 }
 
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.