2011/9/21 D. Barbier <bou...@gmail.com> > On 2011/9/20 Thomas Paviot wrote: > > 2011/9/20 D. Barbier wrote > [...] > >> but get now a segmentation fault: > >> testHash (wrapper_features_unittest.TestWrapperFeatures) ... Test: > >> __hash__ overloading > >> Segmentation fault > >> > >> More precisely: > >> $ python > >> Python 2.6.7 (r267:88850, Aug 3 2011, 11:33:52) > >> [GCC 4.6.1] on linux2 > >> Type "help", "copyright", "credits" or "license" for more information. > >> >>> import OCC.Standard > >> >>> s = OCC.Standard.Standard_Transient() > >> >>> hash1_s = s.__hash__() > >> >>> hash2_s = s.HashCode(pow(2,31)-1) > >> Segmentation fault > [...] > > When compiling pythonocc, you must pass -D__PYTHONOCCOCC_MAXINT__ > integer. > > It's equal to 2^32-1 on 32bit platforms, 2^64-1 on 64bit. This is > computed > > from the file environment.py > > ( > https://github.com/tpaviot/pythonocc/blob/master/src/wrapper/environment.py > ) > > called when compiling pythonocc from the setup.py script. > > Hmmm, I am confused, this is hardcoded to 2^31-1 for 32 and 64 bits: > > # Define HASHCODE_MAXINT. Even on 64 bits systems, HashCode method > require a 32 bits Standard_Integer > # > HASHCODE_MAXINT = pow(2,31)-1 >
You're right. This hack is a bit old, and I didn't remember exactly the reasons for creating this __PYTHONOCC_MAXINT__. Anyway, it is unuseful since the value passed is always the same and independant from the platform (in all cases, pow(2,31)-1). It can be hardcoded into the SWIG file by using return $self->HashCode(2147483647). I pushed tp/__hash_-overloading to fix this issue. You should be able to use your CMakeList.txt file as is (but you will have to recompile all the modules). > > Denis > > Thomas
_______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users