Avoid using calloc(). This triggered an obscure bug on multiprocessor
Sparc Solaris 2.6 (fully patched!) that I don't want to dig into, but
which I suspect is a bug in the multithreaded malloc library that only
shows up when run on a multiprocessor. (The program wasn't using
threads, it was just using the multithreaded C library.)
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 7fed379..7b62258 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -283,11 +283,12 @@
break;
}
}
- newtable = (dictentry *) calloc(sizeof(dictentry), newsize);
+ newtable = (dictentry *) malloc(sizeof(dictentry) * newsize);
if (newtable == NULL) {
PyErr_NoMemory();
return -1;
}
+ memset(newtable, '\0', sizeof(dictentry) * newsize);
mp->ma_size = newsize;
mp->ma_poly = newpoly;
mp->ma_table = newtable;