mirror of https://github.com/python/cpython
gh-110819: Fix ‘kind’ may be used uninitialized warning in `longobject` (#116599)
This commit is contained in:
parent
f8147d01da
commit
eb947cdc13
|
@ -1965,7 +1965,9 @@ long_to_decimal_string_internal(PyObject *aa,
|
|||
digit *pout, *pin, rem, tenpow;
|
||||
int negative;
|
||||
int d;
|
||||
int kind;
|
||||
|
||||
// writer or bytes_writer can be used, but not both at the same time.
|
||||
assert(writer == NULL || bytes_writer == NULL);
|
||||
|
||||
a = (PyLongObject *)aa;
|
||||
if (a == NULL || !PyLong_Check(a)) {
|
||||
|
@ -2078,7 +2080,6 @@ long_to_decimal_string_internal(PyObject *aa,
|
|||
Py_DECREF(scratch);
|
||||
return -1;
|
||||
}
|
||||
kind = writer->kind;
|
||||
}
|
||||
else if (bytes_writer) {
|
||||
*bytes_str = _PyBytesWriter_Prepare(bytes_writer, *bytes_str, strlen);
|
||||
|
@ -2093,7 +2094,6 @@ long_to_decimal_string_internal(PyObject *aa,
|
|||
Py_DECREF(scratch);
|
||||
return -1;
|
||||
}
|
||||
kind = PyUnicode_KIND(str);
|
||||
}
|
||||
|
||||
#define WRITE_DIGITS(p) \
|
||||
|
@ -2141,7 +2141,9 @@ long_to_decimal_string_internal(PyObject *aa,
|
|||
WRITE_DIGITS(p);
|
||||
assert(p == *bytes_str);
|
||||
}
|
||||
else if (kind == PyUnicode_1BYTE_KIND) {
|
||||
else {
|
||||
int kind = writer ? writer->kind : PyUnicode_KIND(str);
|
||||
if (kind == PyUnicode_1BYTE_KIND) {
|
||||
Py_UCS1 *p;
|
||||
WRITE_UNICODE_DIGITS(Py_UCS1);
|
||||
}
|
||||
|
@ -2150,10 +2152,12 @@ long_to_decimal_string_internal(PyObject *aa,
|
|||
WRITE_UNICODE_DIGITS(Py_UCS2);
|
||||
}
|
||||
else {
|
||||
Py_UCS4 *p;
|
||||
assert (kind == PyUnicode_4BYTE_KIND);
|
||||
Py_UCS4 *p;
|
||||
WRITE_UNICODE_DIGITS(Py_UCS4);
|
||||
}
|
||||
}
|
||||
|
||||
#undef WRITE_DIGITS
|
||||
#undef WRITE_UNICODE_DIGITS
|
||||
|
||||
|
@ -2194,11 +2198,12 @@ long_format_binary(PyObject *aa, int base, int alternate,
|
|||
PyObject *v = NULL;
|
||||
Py_ssize_t sz;
|
||||
Py_ssize_t size_a;
|
||||
int kind;
|
||||
int negative;
|
||||
int bits;
|
||||
|
||||
assert(base == 2 || base == 8 || base == 16);
|
||||
// writer or bytes_writer can be used, but not both at the same time.
|
||||
assert(writer == NULL || bytes_writer == NULL);
|
||||
if (a == NULL || !PyLong_Check(a)) {
|
||||
PyErr_BadInternalCall();
|
||||
return -1;
|
||||
|
@ -2246,7 +2251,6 @@ long_format_binary(PyObject *aa, int base, int alternate,
|
|||
if (writer) {
|
||||
if (_PyUnicodeWriter_Prepare(writer, sz, 'x') == -1)
|
||||
return -1;
|
||||
kind = writer->kind;
|
||||
}
|
||||
else if (bytes_writer) {
|
||||
*bytes_str = _PyBytesWriter_Prepare(bytes_writer, *bytes_str, sz);
|
||||
|
@ -2257,7 +2261,6 @@ long_format_binary(PyObject *aa, int base, int alternate,
|
|||
v = PyUnicode_New(sz, 'x');
|
||||
if (v == NULL)
|
||||
return -1;
|
||||
kind = PyUnicode_KIND(v);
|
||||
}
|
||||
|
||||
#define WRITE_DIGITS(p) \
|
||||
|
@ -2318,7 +2321,9 @@ long_format_binary(PyObject *aa, int base, int alternate,
|
|||
WRITE_DIGITS(p);
|
||||
assert(p == *bytes_str);
|
||||
}
|
||||
else if (kind == PyUnicode_1BYTE_KIND) {
|
||||
else {
|
||||
int kind = writer ? writer->kind : PyUnicode_KIND(v);
|
||||
if (kind == PyUnicode_1BYTE_KIND) {
|
||||
Py_UCS1 *p;
|
||||
WRITE_UNICODE_DIGITS(Py_UCS1);
|
||||
}
|
||||
|
@ -2327,10 +2332,12 @@ long_format_binary(PyObject *aa, int base, int alternate,
|
|||
WRITE_UNICODE_DIGITS(Py_UCS2);
|
||||
}
|
||||
else {
|
||||
Py_UCS4 *p;
|
||||
assert (kind == PyUnicode_4BYTE_KIND);
|
||||
Py_UCS4 *p;
|
||||
WRITE_UNICODE_DIGITS(Py_UCS4);
|
||||
}
|
||||
}
|
||||
|
||||
#undef WRITE_DIGITS
|
||||
#undef WRITE_UNICODE_DIGITS
|
||||
|
||||
|
|
Loading…
Reference in New Issue