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.