Python 2.0 naive question
David Bolen
db3l at fitlinxx.com
Fri Sep 22 08:13:25 CEST 2000
"Fredrik Lundh" <effbot at telia.com> writes:
> The problem is that the PYD files contains the name of the Python
> DLL they were linked against, so old PYDs will load the 1.5.2 DLL file,
> and call the wrong version of Py_InitModule. This DLL isn't properly
> initialized, and Py_InitModule will crash.
Yes, the older Python DLL will load, but that shouldn't have to cause
a crash, should it? Presumably, the PYD is calling Py_InitModule from
within its initXxxx function, but that initXxxx function is called
from Python explicitly.
So if Python first looks for a new export that only exists in the new
version, and aborts - as part of the import - if it doesn't find it,
it'll never call initXxxx in the 1.5.2 PYD and you avoid the crash.
If you make the new export a function that returns the Python version
the PYD was built with then Python just calls that (or aborts
immediately assuming pre-2.0 if it isn't exported) and checks it
against its own version - _before_ it calls the initXxxx function in
the PYD.
Or am I still missing something? Crashing the whole process if you
accidentally get a 1.5.2 PYD lying around just seems really nasty.
--
-- David
--
/-----------------------------------------------------------------------\
\ David Bolen \ E-mail: db3l at fitlinxx.com /
| FitLinxx, Inc. \ Phone: (203) 708-5192 |
/ 860 Canal Street, Stamford, CT 06902 \ Fax: (203) 316-5150 \
\-----------------------------------------------------------------------/
More information about the Python-list
mailing list