apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Knight <Christopher.D.Kni...@nasa.gov>
Subject %lld/%llu not handled by apr_vformatter
Date Wed, 11 Aug 2010 15:51:48 GMT
I spent half-a-day yesterday trying to figure out why I was crashing in apr_psprintf on a strlen
until I realized that my "%llu%s" format string was causing it to use my long long int as
a char *.

Needless to say, no harm in adding support for %ll[du] yes?

Ah, 64-bit fun for everyone....

Example code:

#include <apr.h>
#include <apr_pools.h>
#include <apr_strings.h>
#include <stdio.h>

int main(int argc, char **argv) {
    apr_pool_t *pool = NULL;
    char *s = "hello world"; u_int64_t v = 12345678;

    apr_pool_initialize(); apr_pool_create(&(pool), NULL);
    printf("%llu%s", v, s); // works
    char *f = apr_psprintf(pool, "%llu%s", v, s); // segfault on strlen
    printf("%s\n", f);
View raw message