Should this be changed or reverted? The discussion seems to have stalled.

And what about backport for 1.7.x and 1.6.x?

Regards,

Rainer

Am 24.07.2018 um 17:42 schrieb Yann Ylavic:
On Tue, Jul 24, 2018 at 12:53 AM, William A Rowe Jr <wr...@rowe-clan.net> wrote:
I'm concerned that you've made a specific assumption of 2's compliment int.
Nothing in the spec or real world assures us of this. Intel x86 is 2's
compliment, but this is a bad assumption.

I doubt we support 1s complement archs but if so, something like this
would work:

static const char xtoa_digits[] = "9876543210123456789";
static const int xtoa_middle = (sizeof(xtoa_digits) - 1) / 2;

APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n)
{
     const int BUFFER_SIZE = sizeof(int) * 3 + 2;
     char *buf = apr_palloc(p, BUFFER_SIZE);
     char *start = buf + BUFFER_SIZE - 1;
     int negative = (n < 0);
     *start = 0;
     do {
         int tmp = n;
         n /= 10;
         *--start = xtoa_digits[xtoa_middle + tmp - n * 10];
     } while (n);
     if (negative) {
         *--start = '-';
     }
     return start;
}

Same for apr_ltoa() or apr_off_t_toa() (with the corresponding type
for "tmp"), no sign assumption.

Reply via email to