From 44679590e0414cb80c5cc6a95ea4e560b3770247 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 10 Apr 2000 16:20:31 +0000 Subject: [PATCH] Patch by Vladimir Marangozov to include the function name when comparing code objects. This give sless surprising results in -Optimized code. It also sorts code objects by name, now. [I changed the patch to hash() slightly to touch fewer lines.] --- Python/compile.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Python/compile.c b/Python/compile.c index d676b56929..97ab99cff7 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -140,6 +140,8 @@ code_compare(co, cp) PyCodeObject *co, *cp; { int cmp; + cmp = PyObject_Compare(co->co_name, cp->co_name); + if (cmp) return cmp; cmp = co->co_argcount - cp->co_argcount; if (cmp) return cmp; cmp = co->co_nlocals - cp->co_nlocals; @@ -160,7 +162,9 @@ static long code_hash(co) PyCodeObject *co; { - long h, h1, h2, h3, h4; + long h, h0, h1, h2, h3, h4; + h0 = PyObject_Hash(co->co_name); + if (h0 == -1) return -1; h1 = PyObject_Hash(co->co_code); if (h1 == -1) return -1; h2 = PyObject_Hash(co->co_consts); @@ -169,7 +173,7 @@ code_hash(co) if (h3 == -1) return -1; h4 = PyObject_Hash(co->co_varnames); if (h4 == -1) return -1; - h = h1 ^ h2 ^ h3 ^ h4 ^ + h = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ co->co_argcount ^ co->co_nlocals ^ co->co_flags; if (h == -1) h = -2; return h; -- 2.40.0