(Merge 3.4) Closes #21892, #21893: Use PY_FORMAT_SIZE_T instead of %zi or %zu

to format C size_t, because %zi/%u is not supported on all platforms.
This commit is contained in:
Victor Stinner 2014-07-01 08:57:54 +02:00
commit 9f43505f3d
2 changed files with 26 additions and 13 deletions

View File

@ -233,11 +233,12 @@ _Py_hashtable_print_stats(_Py_hashtable_t *ht)
nchains++; nchains++;
} }
} }
printf("hash table %p: entries=%zu/%zu (%.0f%%), ", printf("hash table %p: entries=%"
PY_FORMAT_SIZE_T "u/%" PY_FORMAT_SIZE_T "u (%.0f%%), ",
ht, ht->entries, ht->num_buckets, load * 100.0); ht, ht->entries, ht->num_buckets, load * 100.0);
if (nchains) if (nchains)
printf("avg_chain_len=%.1f, ", (double)total_chain_len / nchains); printf("avg_chain_len=%.1f, ", (double)total_chain_len / nchains);
printf("max_chain_len=%zu, %zu kB\n", printf("max_chain_len=%" PY_FORMAT_SIZE_T "u, %" PY_FORMAT_SIZE_T "u kB\n",
max_chain_len, size / 1024); max_chain_len, size / 1024);
} }
#endif #endif

View File

@ -1011,17 +1011,19 @@ _PyUnicode_Dump(PyObject *op)
} }
else else
data = unicode->data.any; data = unicode->data.any;
printf("%s: len=%zu, ",unicode_kind_name(op), ascii->length); printf("%s: len=%" PY_FORMAT_SIZE_T "u, ",
unicode_kind_name(op), ascii->length);
if (ascii->wstr == data) if (ascii->wstr == data)
printf("shared "); printf("shared ");
printf("wstr=%p", ascii->wstr); printf("wstr=%p", ascii->wstr);
if (!(ascii->state.ascii == 1 && ascii->state.compact == 1)) { if (!(ascii->state.ascii == 1 && ascii->state.compact == 1)) {
printf(" (%zu), ", compact->wstr_length); printf(" (%" PY_FORMAT_SIZE_T "u), ", compact->wstr_length);
if (!ascii->state.compact && compact->utf8 == unicode->data.any) if (!ascii->state.compact && compact->utf8 == unicode->data.any)
printf("shared "); printf("shared ");
printf("utf8=%p (%zu)", compact->utf8, compact->utf8_length); printf("utf8=%p (%" PY_FORMAT_SIZE_T "u)",
compact->utf8, compact->utf8_length);
} }
printf(", data=%p\n", data); printf(", data=%p\n", data);
} }
@ -1370,8 +1372,9 @@ PyUnicode_CopyCharacters(PyObject *to, Py_ssize_t to_start,
how_many = Py_MIN(PyUnicode_GET_LENGTH(from), how_many); how_many = Py_MIN(PyUnicode_GET_LENGTH(from), how_many);
if (to_start + how_many > PyUnicode_GET_LENGTH(to)) { if (to_start + how_many > PyUnicode_GET_LENGTH(to)) {
PyErr_Format(PyExc_SystemError, PyErr_Format(PyExc_SystemError,
"Cannot write %zi characters at %zi " "Cannot write %" PY_FORMAT_SIZE_T "i characters at %"
"in a string of %zi characters", PY_FORMAT_SIZE_T "i in a string of %"
PY_FORMAT_SIZE_T "i characters",
how_many, to_start, PyUnicode_GET_LENGTH(to)); how_many, to_start, PyUnicode_GET_LENGTH(to));
return -1; return -1;
} }
@ -4080,7 +4083,9 @@ unicode_decode_call_errorhandler_wchar(
if (newpos<0) if (newpos<0)
newpos = insize+newpos; newpos = insize+newpos;
if (newpos<0 || newpos>insize) { if (newpos<0 || newpos>insize) {
PyErr_Format(PyExc_IndexError, "position %zd from error handler out of bounds", newpos); PyErr_Format(PyExc_IndexError,
"position %" PY_FORMAT_SIZE_T
"d from error handler out of bounds", newpos);
goto onError; goto onError;
} }
@ -4173,7 +4178,9 @@ unicode_decode_call_errorhandler_writer(
if (newpos<0) if (newpos<0)
newpos = insize+newpos; newpos = insize+newpos;
if (newpos<0 || newpos>insize) { if (newpos<0 || newpos>insize) {
PyErr_Format(PyExc_IndexError, "position %zd from error handler out of bounds", newpos); PyErr_Format(PyExc_IndexError,
"position %" PY_FORMAT_SIZE_T
"d from error handler out of bounds", newpos);
goto onError; goto onError;
} }
@ -6436,7 +6443,9 @@ unicode_encode_call_errorhandler(const char *errors,
if (*newpos<0) if (*newpos<0)
*newpos = len + *newpos; *newpos = len + *newpos;
if (*newpos<0 || *newpos>len) { if (*newpos<0 || *newpos>len) {
PyErr_Format(PyExc_IndexError, "position %zd from error handler out of bounds", *newpos); PyErr_Format(PyExc_IndexError,
"position %" PY_FORMAT_SIZE_T
"d from error handler out of bounds", *newpos);
Py_DECREF(restuple); Py_DECREF(restuple);
return NULL; return NULL;
} }
@ -8436,7 +8445,9 @@ unicode_translate_call_errorhandler(const char *errors,
else else
*newpos = i_newpos; *newpos = i_newpos;
if (*newpos<0 || *newpos>PyUnicode_GET_LENGTH(unicode)) { if (*newpos<0 || *newpos>PyUnicode_GET_LENGTH(unicode)) {
PyErr_Format(PyExc_IndexError, "position %zd from error handler out of bounds", *newpos); PyErr_Format(PyExc_IndexError,
"position %" PY_FORMAT_SIZE_T
"d from error handler out of bounds", *newpos);
Py_DECREF(restuple); Py_DECREF(restuple);
return NULL; return NULL;
} }
@ -9764,7 +9775,8 @@ PyUnicode_Join(PyObject *separator, PyObject *seq)
item = items[i]; item = items[i];
if (!PyUnicode_Check(item)) { if (!PyUnicode_Check(item)) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"sequence item %zd: expected str instance," "sequence item %" PY_FORMAT_SIZE_T
"d: expected str instance,"
" %.80s found", " %.80s found",
i, Py_TYPE(item)->tp_name); i, Py_TYPE(item)->tp_name);
goto onError; goto onError;
@ -14454,7 +14466,7 @@ unicode_format_arg_format(struct unicode_formatter_t *ctx,
default: default:
PyErr_Format(PyExc_ValueError, PyErr_Format(PyExc_ValueError,
"unsupported format character '%c' (0x%x) " "unsupported format character '%c' (0x%x) "
"at index %zd", "at index %" PY_FORMAT_SIZE_T "d",
(31<=arg->ch && arg->ch<=126) ? (char)arg->ch : '?', (31<=arg->ch && arg->ch<=126) ? (char)arg->ch : '?',
(int)arg->ch, (int)arg->ch,
ctx->fmtpos - 1); ctx->fmtpos - 1);