added "magic" number to the _sre module, to avoid weird errors caused

by compiler/engine mismatches
This commit is contained in:
Fredrik Lundh 2001-01-15 12:46:09 +00:00
parent 142297ac92
commit b35ffc0417
4 changed files with 21 additions and 1 deletions

View File

@ -12,6 +12,8 @@ import _sre
from sre_constants import * from sre_constants import *
assert _sre.MAGIC == MAGIC, "SRE module mismatch"
MAXCODE = 65535 MAXCODE = 65535
def _compile(code, pattern, flags): def _compile(code, pattern, flags):

View File

@ -9,8 +9,15 @@
# See the sre.py file for information on usage and redistribution. # 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 MAXREPEAT = 65535
# SRE standard exception (access as sre.error)
# should this really be here? # should this really be here?
class error(Exception): 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, OPCODES, "SRE_OP")
dump(f, ATCODES, "SRE") dump(f, ATCODES, "SRE")
dump(f, CHCODES, "SRE") dump(f, CHCODES, "SRE")

View File

@ -2355,11 +2355,19 @@ __declspec(dllexport)
#endif #endif
init_sre(void) init_sre(void)
{ {
PyObject* m;
PyObject* d;
/* Patch object types */ /* Patch object types */
Pattern_Type.ob_type = Match_Type.ob_type = Pattern_Type.ob_type = Match_Type.ob_type =
Scanner_Type.ob_type = &PyType_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) */ #endif /* !defined(SRE_RECURSIVE) */

View File

@ -11,6 +11,7 @@
* See the _sre.c file for information on usage and redistribution. * See the _sre.c file for information on usage and redistribution.
*/ */
#define SRE_MAGIC 20010115
#define SRE_OP_FAILURE 0 #define SRE_OP_FAILURE 0
#define SRE_OP_SUCCESS 1 #define SRE_OP_SUCCESS 1
#define SRE_OP_ANY 2 #define SRE_OP_ANY 2