Skip to content

Commit 22642e2

Browse files
Older versions of Python 2.7 don't have PyMem_Calloc() so use PyMem_Malloc()
and memset() instead for Python 2.7.
1 parent 02d336c commit 22642e2

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/cxoConnection.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,21 @@ static int cxoConnectionParams_processShardingKey(cxoConnectionParams *params,
415415
return 0;
416416

417417
// allocate memory for the sharding key values
418+
#if PY_MAJOR_VERSION >= 3
418419
columns = PyMem_Calloc(numColumns, sizeof(dpiShardingKeyColumn));
419420
buffers = PyMem_Calloc(numColumns, sizeof(cxoBuffer));
421+
#else
422+
columns = PyMem_Malloc(numColumns * sizeof(dpiShardingKeyColumn));
423+
buffers = PyMem_Malloc(numColumns * sizeof(cxoBuffer));
424+
#endif
425+
if (!columns || !buffers) {
426+
PyErr_NoMemory();
427+
return -1;
428+
}
429+
#if PY_MAJOR_VERSION < 3
430+
memset(columns, 0, numColumns * sizeof(dpiShardingKeyColumn));
431+
memset(buffers, 0, numColumns * sizeof(cxoBuffer));
432+
#endif
420433
if (isSuperShardingKey) {
421434
params->superShardingKeyColumns = columns;
422435
params->superShardingKeyBuffers = buffers;
@@ -426,10 +439,6 @@ static int cxoConnectionParams_processShardingKey(cxoConnectionParams *params,
426439
params->shardingKeyBuffers = buffers;
427440
params->numShardingKeyColumns = numColumns;
428441
}
429-
if (!columns || !buffers) {
430-
PyErr_NoMemory();
431-
return -1;
432-
}
433442

434443
// process each value
435444
for (i = 0; i < numColumns; i++) {

0 commit comments

Comments
 (0)