- fixed split behaviour on empty matches

- fixed compiler problems when using locale/unicode flags

- fixed group/octal code parsing in sub/subn templates
diff --git a/Modules/_sre.c b/Modules/_sre.c
index 6b0fa61..7b1adbd 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -1534,6 +1534,9 @@
     if (!strcmp(name, "flags"))
 		return Py_BuildValue("i", self->flags);
 
+    if (!strcmp(name, "groups"))
+		return Py_BuildValue("i", self->groups);
+
 	if (!strcmp(name, "groupindex") && self->groupindex) {
         Py_INCREF(self->groupindex);
 		return self->groupindex;
@@ -1939,9 +1942,6 @@
 		return self->pattern;
     }
 
-    if (!strcmp(name, "groups"))
-		return Py_BuildValue("i", ((PatternObject*) self->pattern)->groups);
-
 	PyErr_SetString(PyExc_AttributeError, name);
 	return NULL;
 }