aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libshiboken/sbkenum.cpp5
-rw-r--r--tests/samplebinding/enum_test.py4
2 files changed, 6 insertions, 3 deletions
diff --git a/libshiboken/sbkenum.cpp b/libshiboken/sbkenum.cpp
index e65cbd7a6..554618db6 100644
--- a/libshiboken/sbkenum.cpp
+++ b/libshiboken/sbkenum.cpp
@@ -223,7 +223,10 @@ static PyObject* enum_richcompare(PyObject* self, PyObject* other, int op)
static Py_hash_t enum_hash(PyObject* pyObj)
{
- return PyObject_Hash(reinterpret_cast<SbkEnumObject*>(pyObj)->ob_name);
+ Py_hash_t val = reinterpret_cast<SbkEnumObject*>(pyObj)->ob_value;
+ if (val == -1)
+ val = -2;
+ return val;
}
static PyGetSetDef SbkEnumGetSetList[] = {
diff --git a/tests/samplebinding/enum_test.py b/tests/samplebinding/enum_test.py
index 8346f39d7..7d95f669c 100644
--- a/tests/samplebinding/enum_test.py
+++ b/tests/samplebinding/enum_test.py
@@ -52,8 +52,8 @@ class EnumTest(unittest.TestCase):
self.assertEqual(eval(repr(enum)), enum)
def testHashability(self):
- '''Enums should be hashable and different enums with different values should have different hashes'''
- self.assertNotEqual(hash(SampleNamespace.TwoIn), hash(SampleNamespace.TwoOut))
+ self.assertEqual(hash(SampleNamespace.TwoIn), hash(SampleNamespace.TwoOut))
+ self.assertNotEqual(hash(SampleNamespace.TwoIn), hash(SampleNamespace.OneIn))
def testEnumValuesInsideEnum(self):
'''Enum values should be accessible inside the enum as well as outside.'''