summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/sre_compile.py2
-rw-r--r--Lib/sre_constants.py9
-rw-r--r--Modules/_sre.c10
-rw-r--r--Modules/sre_constants.h1
4 files changed, 21 insertions, 1 deletions
diff --git a/Lib/sre_compile.py b/Lib/sre_compile.py
index adab767..c2996fc 100644
--- a/Lib/sre_compile.py
+++ b/Lib/sre_compile.py
@@ -12,6 +12,8 @@ import _sre
from sre_constants import *
+assert _sre.MAGIC == MAGIC, "SRE module mismatch"
+
MAXCODE = 65535
def _compile(code, pattern, flags):
diff --git a/Lib/sre_constants.py b/Lib/sre_constants.py
index a5e4bb8..b429a33 100644
--- a/Lib/sre_constants.py
+++ b/Lib/sre_constants.py
@@ -9,8 +9,15 @@
# See the sre.py file for information on usage and redistribution.
#
+# update when constants are added or removed
+
+MAGIC = 20010115
+
+# max code word in this release
+
MAXREPEAT = 65535
+# SRE standard exception (access as sre.error)
# should this really be here?
class error(Exception):
@@ -211,6 +218,8 @@ if __name__ == "__main__":
""")
+ f.write("#define SRE_MAGIC %d\n" % MAGIC)
+
dump(f, OPCODES, "SRE_OP")
dump(f, ATCODES, "SRE")
dump(f, CHCODES, "SRE")
diff --git a/Modules/_sre.c b/Modules/_sre.c
index b040d87..efb704b 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -2355,11 +2355,19 @@ __declspec(dllexport)
#endif
init_sre(void)
{
+ PyObject* m;
+ PyObject* d;
+
/* Patch object types */
Pattern_Type.ob_type = Match_Type.ob_type =
Scanner_Type.ob_type = &PyType_Type;
- Py_InitModule("_" MODULE, _functions);
+ m = Py_InitModule("_" MODULE, _functions);
+ d = PyModule_GetDict(m);
+
+ PyDict_SetItemString(
+ d, "MAGIC", (PyObject*) PyInt_FromLong(SRE_MAGIC)
+ );
}
#endif /* !defined(SRE_RECURSIVE) */
diff --git a/Modules/sre_constants.h b/Modules/sre_constants.h
index 6cad089..c6850ad 100644
--- a/Modules/sre_constants.h
+++ b/Modules/sre_constants.h
@@ -11,6 +11,7 @@
* See the _sre.c file for information on usage and redistribution.
*/
+#define SRE_MAGIC 20010115
#define SRE_OP_FAILURE 0
#define SRE_OP_SUCCESS 1
#define SRE_OP_ANY 2