Older versions of Python 2.7 don't have PyMem_Calloc() so use PyMem_Malloc()

and memset() instead for Python 2.7.
This commit is contained in:
Anthony Tuininga 2019-11-29 15:20:42 -07:00
parent 02d336c5e9
commit 22642e2826

View File

@ -415,8 +415,21 @@ static int cxoConnectionParams_processShardingKey(cxoConnectionParams *params,
return 0;
// allocate memory for the sharding key values
#if PY_MAJOR_VERSION >= 3
columns = PyMem_Calloc(numColumns, sizeof(dpiShardingKeyColumn));
buffers = PyMem_Calloc(numColumns, sizeof(cxoBuffer));
#else
columns = PyMem_Malloc(numColumns * sizeof(dpiShardingKeyColumn));
buffers = PyMem_Malloc(numColumns * sizeof(cxoBuffer));
#endif
if (!columns || !buffers) {
PyErr_NoMemory();
return -1;
}
#if PY_MAJOR_VERSION < 3
memset(columns, 0, numColumns * sizeof(dpiShardingKeyColumn));
memset(buffers, 0, numColumns * sizeof(cxoBuffer));
#endif
if (isSuperShardingKey) {
params->superShardingKeyColumns = columns;
params->superShardingKeyBuffers = buffers;
@ -426,10 +439,6 @@ static int cxoConnectionParams_processShardingKey(cxoConnectionParams *params,
params->shardingKeyBuffers = buffers;
params->numShardingKeyColumns = numColumns;
}
if (!columns || !buffers) {
PyErr_NoMemory();
return -1;
}
// process each value
for (i = 0; i < numColumns; i++) {