if (is_charset_array($e, $l)) {
$self->ConvertStringFromPythonData($mem_ctx, $py_var, $var_name, $fail);
} else {
+ my $size = "$e->{NAME}_size_$l->{LEVEL_INDEX}";
my $counter = "$e->{NAME}_cntr_$l->{LEVEL_INDEX}";
$self->pidl("PY_CHECK_TYPE(&PyList_Type, $py_var, $fail);");
$self->pidl("{");
$self->indent;
- $self->pidl("int $counter;");
+ $self->pidl("ssize_t $size = PyList_GET_SIZE($py_var);");
+ $self->pidl("ssize_t $counter;");
if (ArrayDynamicallyAllocated($e, $l)) {
- $self->pidl("$var_name = talloc_array_ptrtype($mem_ctx, $var_name, PyList_GET_SIZE($py_var));");
+ $self->pidl("$var_name = talloc_array_ptrtype($mem_ctx, $var_name, $size);");
$self->pidl("if (!$var_name) { $fail }");
$self->pidl("talloc_set_name_const($var_name, \"ARRAY: $var_name\");");
} else {
- $self->pidl("if (ARRAY_SIZE($var_name) != PyList_GET_SIZE($py_var)) {");
+ $self->pidl("if (ARRAY_SIZE($var_name) != $size) {");
$self->indent;
$self->pidl("PyErr_Format(PyExc_TypeError, \"Expected list of type %s, length %zu, got %zd\", Py_TYPE($py_var)->tp_name, ARRAY_SIZE($var_name), PyList_GET_SIZE($py_var));");
$self->pidl("$fail");
$self->deindent;
$self->pidl("}");
}
- $self->pidl("for ($counter = 0; $counter < PyList_GET_SIZE($py_var); $counter++) {");
+ $self->pidl("for ($counter = 0; $counter < $size; $counter++) {");
$self->indent;
if (ArrayDynamicallyAllocated($e, $l)) {
$self->ConvertObjectFromPythonLevel($env, $var_name, "PyList_GET_ITEM($py_var, $counter)", $e, $nl, "($var_name)"."[$counter]", $fail, 0);