> On Mar 20, 2017, at 10:12, Ruediger Meier <sweet_...@gmx.de> wrote: > > On Monday 20 March 2017, Andi Vajda wrote: >>>> On Mar 20, 2017, at 05:16, Ruediger Meier <sweet_...@gmx.de> wrote: >>>> On Monday 20 March 2017, Andi Vajda wrote: >>>> >>>> On Mon, 20 Mar 2017, Ruediger Meier wrote: >>>>>> Someone with access to Windows, please help test/fix/finish >>>>>> support for Python 3 on Windows, both with the MSVC and Mingw >>>>>> compilers. I have no access to Windows anymore. >>>>> >>>>> I know already about one MSVC issue: >>>>> https://github.com/rudimeier/jcc/issues/1 >>>>> >>>>> probably fixed by >>>>> https://github.com/rudimeier/jcc/commit/764ed0dc1f77c68e4a6998688 >>>>> d2 e8340704fd237 (But this fix is also not tested yet.) >>>> >>>> I changed strhash to use Py_hash_t. >>> >>> This is now wrong and I could reproduce a segfault on OSX 10.11, >>> xcode 8. The buffersize "hexdig + 1" has to match the type we are >>> printing. We can't calculate the size from Py_hash_t but print >>> ulong. >> >> Ah yes, good point. Sorry for the mess up. >> >>> Most safely and without precision loss we could do it like the >>> patch below. >>> >>> Notes: >>> 1. "static const" was required to actually fix MSVC's VLA issue. >> >> Yes, but that's not reentrant, thus we need to switch back to a >> constant size for the array, like [20] we ad before, or [40] now. > > Not reentrant? static const should be as good as a #define IMO.
Ah you mean static const for the size, not for the array. That would work. > In doubt > you could avoid the variable and use "sizeof(hash) * 2" two times > where we need it. > >>> 2. The macro PRIxMAX is the same as "%jx". I've choosed the macro >>> because it should be compatible to Visual Studio >=2013 while "%jx" >>> would need Visual Studio >=2015. Moreover when using incompatible >>> compilers the macro would give an error at compile time rather >>> than "%jx" would just crash at runtime. >> >> What's wring with %lx ? > > %lx is for long but Py_hash_t can be longer. Can it ? Py_hash_t is defined to be the same as Py_ssize_t. What's its size ? > %jx/PRIxMAX is the biggest > possible for uintmax_t. Is that bigger than unsigned long ? Ok, I think the time has come to see if this function can be removed altogether... let me see... Andi.. > > cu, > Rudi