[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;