[Python-Dev] Py_ssize_t formatting

Neal Norwitz nnorwitz at gmail.com
Sat May 13 20:16:21 CEST 2006


On 5/13/06, "Martin v. Löwis" <martin at v.loewis.de> wrote:
>
> > '%zd' won't work since my value can be negative, and the 'z' modifier
> > converts the argument to size_t.
>
> That's a bug. It should print it signed. If unsigned printing of size_t
> is desired, %zu should be used.

Looking in stringobject.c, I don't see how %zu (or %lu) can be used
with String_FromFormatV.  Here's the code around line 260 (note
ssize_t in the comment really means Py_ssize_t):

                        /* handle the long flag, but only for %ld.  others
                           can be added when necessary. */
                        if (*f == 'l' && *(f+1) == 'd') {
                                longflag = 1;
                                ++f;
                        }
                        /* handle the ssize_t flag. */
                        if (*f == 'z' && *(f+1) == 'd') {
                                size_tflag = 1;
                                ++f;
                        }

n


More information about the Python-Dev mailing list