]> granicus.if.org Git - python/commitdiff
_testbuffer.c: In all current use cases of cmp_structure() dest->format and
authorStefan Krah <skrah@bytereef.org>
Thu, 6 Sep 2012 07:42:29 +0000 (09:42 +0200)
committerStefan Krah <skrah@bytereef.org>
Thu, 6 Sep 2012 07:42:29 +0000 (09:42 +0200)
src->format are either both NULL or both non-NULL. However, it is safer to
generalize the function. Found by Coverity.

Modules/_testbuffer.c

index 87ada0a092845ae8eee2f9b302a27ad04c71c67d..316666e68ec22af9cb5f8d5b128226c7d24ff254 100644 (file)
@@ -16,6 +16,7 @@ PyObject *calcsize = NULL;
 static const char *simple_fmt = "B";
 PyObject *simple_format = NULL;
 #define SIMPLE_FORMAT(fmt) (fmt == NULL || strcmp(fmt, "B") == 0)
+#define FIX_FORMAT(fmt) (fmt == NULL ? "B" : fmt)
 
 
 /**************************************************************************/
@@ -513,10 +514,8 @@ static int
 cmp_structure(Py_buffer *dest, Py_buffer *src)
 {
     Py_ssize_t i;
-    int same_fmt = ((dest->format == NULL && src->format == NULL) || \
-                    (strcmp(dest->format, src->format) == 0));
 
-    if (!same_fmt ||
+    if (strcmp(FIX_FORMAT(dest->format), FIX_FORMAT(src->format)) != 0 ||
         dest->itemsize != src->itemsize ||
         dest->ndim != src->ndim)
         return -1;