
Gustavo Niemeyer wrote:
The changes to re are still throwing off signed/unsigned warnings. Can you please get that fixed up?
My changes to sre have nothing to do with these warnings.
This is not true. I get Modules/_sre.c:811: warning: comparison between signed and unsigned Now, line 811 is DATA_ALLOC(SRE_MATCH_CONTEXT, ctx); This expands to alloc_pos = state->data_stack_base; \ TRACE(("allocating %s in %d (%d)\n", \ SFY(type), alloc_pos, sizeof(type))); \ if (state->data_stack_size < alloc_pos+sizeof(type)) { \ int j = data_stack_grow(state, sizeof(type)); \ if (j < 0) return j; \ if (ctx_pos != -1) \ DATA_STACK_LOOKUP_AT(state, SRE_MATCH_CONTEXT, ctx, ctx_pos); \ } \ ptr = (type*)(state->data_stack+alloc_pos); \ state->data_stack_base += sizeof(type); \ } while (0) The culprit is the line if (state->data_stack_size < alloc_pos+sizeof(type)) { \ because data_stack_size is signed, and sizeof(type) is size_t. This line is yours 2.101 (niemeyer 17-Oct-03): if (state->data_stack_size < alloc_pos+sizeof (type)) { Changing the type of data_stack_size to unsigned makes the warning go away. Please change all uses of sizes/positions to "size_t", and change the special -1 marker to (size_t)-1. Regards, Martin