[Python-checkins] CVS: python/dist/src/Modules _sre.c,2.24,2.25
Fredrik Lundh
python-dev@python.org
Wed, 5 Jul 2000 14:14:18 -0700
Update of /cvsroot/python/python/dist/src/Modules
In directory slayer.i.sourceforge.net:/tmp/cvs-serv29972/Modules
Modified Files:
_sre.c
Log Message:
maintenance release:
- reorganized some code to get rid of -Wall and -W4
warnings
- fixed default argument handling for sub/subn/split
methods (reported by Peter Schneider-Kamp).
Index: _sre.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_sre.c,v
retrieving revision 2.24
retrieving revision 2.25
diff -C2 -r2.24 -r2.25
*** _sre.c 2000/07/03 21:31:48 2.24
--- _sre.c 2000/07/05 21:14:16 2.25
***************
*** 64,67 ****
--- 64,68 ----
#if defined(_MSC_VER)
#pragma optimize("agtw", on) /* doesn't seem to make much difference... */
+ #pragma warning(disable: 4710) /* who cares if functions are not inlined ;-) */
/* fastest possible local call under MSVC */
#define LOCAL(type) static __inline type __fastcall
***************
*** 241,246 ****
while (stacksize < lo)
stacksize = 2 * stacksize;
! /* FIXME: <fl> could trim size if it's larger than lo, and
! much larger than hi */
TRACE(("grow stack to %d\n", stacksize));
stack = realloc(state->stack, sizeof(SRE_STACK) * stacksize);
--- 242,247 ----
while (stacksize < lo)
stacksize = 2 * stacksize;
! /* FIXME: <fl> could trim size if it's much larger than hi,
! as long it's larger than lo */
TRACE(("grow stack to %d\n", stacksize));
stack = realloc(state->stack, sizeof(SRE_STACK) * stacksize);
***************
*** 817,836 ****
while (pattern[2] == 65535 || count < (int) pattern[2]) {
- void *mark0, *mark1;
- if (pattern[3] != 65535) {
- mark0 = state->mark[pattern[3]];
- mark1 = state->mark[pattern[3]+1];
- }
- state->stackbase = stack;
- i = SRE_MATCH(state, pattern + 4);
- state->stackbase = stackbase; /* rewind */
- if (i < 0)
- return i;
- if (!i)
- break;
- if (state->ptr == ptr) {
- count = (int) pattern[2];
- break;
- }
/* this position was valid; add it to the retry
stack */
--- 818,821 ----
***************
*** 841,845 ****
return i; /* out of memory */
}
! TRACE(("%8d: stack[%d] = %d\n", PTR(ptr), stack, PTR(ptr)));
sp = state->stack + stack;
sp->ptr = ptr;
--- 826,832 ----
return i; /* out of memory */
}
! TRACE(("%8d: stack[%d]\n", PTR(ptr), stack));
! TRACE((" ptr %d mark %d %d %d\n",
! PTR(ptr), pattern[3], PTR(mark0), PTR(mark1)));
sp = state->stack + stack;
sp->ptr = ptr;
***************
*** 847,854 ****
sp->mark = pattern[3];
if (pattern[3] != 65535) {
! sp->mark0 = mark0;
! sp->mark1 = mark1;
}
stack++;
/* move forward */
ptr = state->ptr;
--- 834,852 ----
sp->mark = pattern[3];
if (pattern[3] != 65535) {
! sp->mark0 = state->mark[pattern[3]];
! sp->mark1 = state->mark[pattern[3]+1];
}
stack++;
+ state->stackbase = stack;
+ i = SRE_MATCH(state, pattern + 4);
+ state->stackbase = stackbase;
+ if (i < 0)
+ return i;
+ if (!i)
+ break;
+ if (state->ptr == ptr) {
+ count = (int) pattern[2];
+ break;
+ }
/* move forward */
ptr = state->ptr;
***************
*** 955,958 ****
--- 953,957 ----
TRACE(("%8d: leave (failure)\n", PTR(ptr)));
if (stack-- > stackbase) {
+ TRACE(("%8d: pop stack[%d]\n", stack));
sp = state->stack + stack;
ptr = sp->ptr;
***************
*** 983,987 ****
SRE_CHAR* end = state->end;
int status = 0;
! int prefix_len;
SRE_CODE* prefix = NULL;
SRE_CODE* charset = NULL;
--- 982,986 ----
SRE_CHAR* end = state->end;
int status = 0;
! int prefix_len = 0;
SRE_CODE* prefix = NULL;
SRE_CODE* charset = NULL;
***************
*** 1016,1020 ****
#if defined(USE_FAST_SEARCH)
! if (prefix && overlap && prefix_len > 1) {
/* pattern starts with a known prefix. use the overlap
table to skip forward as fast as we possibly can */
--- 1015,1019 ----
#if defined(USE_FAST_SEARCH)
! if (prefix_len > 1) {
/* pattern starts with a known prefix. use the overlap
table to skip forward as fast as we possibly can */
***************
*** 1468,1473 ****
PyObject* template;
PyObject* string;
! PyObject* count;
! if (!PyArg_ParseTuple(args, "OOO", &template, &string, &count))
return NULL;
--- 1467,1472 ----
PyObject* template;
PyObject* string;
! PyObject* count = Py_False; /* zero */
! if (!PyArg_ParseTuple(args, "OO|O", &template, &string, &count))
return NULL;
***************
*** 1481,1486 ****
PyObject* template;
PyObject* string;
! PyObject* count;
! if (!PyArg_ParseTuple(args, "OOO", &template, &string, &count))
return NULL;
--- 1480,1485 ----
PyObject* template;
PyObject* string;
! PyObject* count = Py_False; /* zero */
! if (!PyArg_ParseTuple(args, "OO|O", &template, &string, &count))
return NULL;
***************
*** 1493,1498 ****
{
PyObject* string;
! PyObject* maxsplit;
! if (!PyArg_ParseTuple(args, "OO", &string, &maxsplit))
return NULL;
--- 1492,1497 ----
{
PyObject* string;
! PyObject* maxsplit = Py_False; /* zero */
! if (!PyArg_ParseTuple(args, "O|O", &string, &maxsplit))
return NULL;
***************
*** 1831,1835 ****
int index;
! PyObject* index_ = Py_False;
if (!PyArg_ParseTuple(args, "|O", &index_))
return NULL;
--- 1830,1834 ----
int index;
! PyObject* index_ = Py_False; /* zero */
if (!PyArg_ParseTuple(args, "|O", &index_))
return NULL;
***************
*** 1858,1862 ****
int index;
! PyObject* index_ = Py_False;
if (!PyArg_ParseTuple(args, "|O", &index_))
return NULL;
--- 1857,1861 ----
int index;
! PyObject* index_ = Py_False; /* zero */
if (!PyArg_ParseTuple(args, "|O", &index_))
return NULL;
***************
*** 1885,1889 ****
int index;
! PyObject* index_ = Py_False;
if (!PyArg_ParseTuple(args, "|O", &index_))
return NULL;
--- 1884,1888 ----
int index;
! PyObject* index_ = Py_False; /* zero */
if (!PyArg_ParseTuple(args, "|O", &index_))
return NULL;