]> granicus.if.org Git - python/commitdiff
return -1 for undefined groups (as implemented in 1.5.2) instead of
authorFredrik Lundh <fredrik@pythonware.com>
Sat, 2 Sep 2000 16:36:57 +0000 (16:36 +0000)
committerFredrik Lundh <fredrik@pythonware.com>
Sat, 2 Sep 2000 16:36:57 +0000 (16:36 +0000)
None (as documented) from start/end/span.  closes bug #113254

Lib/test/test_sre.py
Modules/_sre.c

index 3d8926fcdc4a577d7fc5a3497152aa0fc412360a..1eea12fee82cc5b76a8e0cecd50c0a5b16f80428 100644 (file)
@@ -46,7 +46,7 @@ def test(expression, result, exception=None):
 if verbose:
     print 'Running tests on character literals'
 
-for i in range(0, 256):
+for i in [0, 8, 16, 32, 64, 127, 128, 255]:
     test(r"""sre.match("\%03o" % i, chr(i)) != None""", 1)
     test(r"""sre.match("\%03o0" % i, chr(i)+"0") != None""", 1)
     test(r"""sre.match("\%03o8" % i, chr(i)+"8") != None""", 1)
@@ -73,6 +73,11 @@ test(r"""sre.match('x*', 'xxxa').span(0)""", (0, 3))
 test(r"""sre.match('x*', 'xxxa').span()""", (0, 3))
 test(r"""sre.match('a+', 'xxx')""", None)
 
+# bug 113254
+test(r"""sre.match('(a)|(b)', 'b').start(1)""", -1)
+test(r"""sre.match('(a)|(b)', 'b').end(1)""", -1)
+test(r"""sre.match('(a)|(b)', 'b').span(1)""", (-1, -1))
+
 if verbose:
     print 'Running tests on sre.sub'
 
index 61ee694ad42b62abbf131d0f80f8a9a64fdd71c1..dc6478bca2ddd27da6c63d3b21ed70b14d338010 100644 (file)
@@ -17,6 +17,7 @@
  * 00-08-07 fl  use PyOS_CheckStack() if available
  * 00-08-08 fl  changed findall to return empty strings instead of None
  * 00-08-27 fl  properly propagate memory errors
+ * 00-09-02 fl  return -1 instead of None for start/end/span
  *
  * Copyright (c) 1997-2000 by Secret Labs AB.  All rights reserved.
  *
@@ -1983,11 +1984,7 @@ match_start(MatchObject* self, PyObject* args)
         return NULL;
     }
 
-    if (self->mark[index*2] < 0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
+    /* mark is -1 if group is undefined */
     return Py_BuildValue("i", self->mark[index*2]);
 }
 
@@ -2010,11 +2007,7 @@ match_end(MatchObject* self, PyObject* args)
         return NULL;
     }
 
-    if (self->mark[index*2] < 0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
+    /* mark is -1 if group is undefined */
     return Py_BuildValue("i", self->mark[index*2+1]);
 }
 
@@ -2064,12 +2057,7 @@ match_span(MatchObject* self, PyObject* args)
         return NULL;
     }
 
-    if (self->mark[index*2] < 0) {
-        Py_INCREF(Py_None);
-        Py_INCREF(Py_None);
-        return Py_BuildValue("OO", Py_None, Py_None);
-    }
-
+    /* marks are -1 if group is undefined */
     return _pair(self->mark[index*2], self->mark[index*2+1]);
 }