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.