Tim Peters [Wed, 19 Dec 2001 19:05:01 +0000 (19:05 +0000)]
SF bug #495021: Crash calling os.stat with a trailing backslash
Patch from Mark Hammond, plus code rearrangement and comments from me.
posix_do_stat(): Windows-specific code could try to free() stack
memory in some cases when a path ending with a forward or backward slash
was passed to os.stat().
Guido van Rossum [Wed, 19 Dec 2001 16:56:54 +0000 (16:56 +0000)]
save(): Fix for SF bug #494904: Cannot pickle a class with a
metaclass, reported by Dan Parisien.
Objects that are instances of custom metaclasses, i.e. whose ob_type
is a subclass of PyType_Type, should be pickled the same as new-style
classes (objects whose ob_type is PyType_Type). This can't be done
through the existing dispatch switches, and the __reduce__ trick
doesn't work for these, since it finds the unbound __reduce__ for
instances of the class (inherited from PyBaseObject_Type). So check
explicitly using PyType_IsSubtype().
Guido van Rossum [Wed, 19 Dec 2001 16:55:02 +0000 (16:55 +0000)]
Pickler.save(): Fix for SF bug #494904: Cannot pickle a class with a
metaclass, reported by Dan Parisien.
Objects that are instances of custom metaclasses, i.e. whose class is
a subclass of 'type', should be pickled the same as new-style classes
(objects whose class is 'type'). This can't be done through a
dispatch table entry, and the __reduce__ trick doesn't work for these,
since it finds the unbound __reduce__ for instances of the class
(inherited from 'object'). So check explicitly using issubclass().
Jack Jansen [Wed, 19 Dec 2001 09:24:40 +0000 (09:24 +0000)]
When running regen for the plat directories we should use the BUILDEXT
extension, not the EXT one, as regen uses the python binary in the build
directory. Fixes #493959.
Tim Peters [Wed, 19 Dec 2001 04:41:35 +0000 (04:41 +0000)]
SF bug #494738: binascii_b2a_base64 overwrites memory.
binascii_b2a_base64(): We didn't allocate enough buffer space for very
short inputs (e.g., a 1-byte input can produce a 5-byte output, but we
only allocated 2 bytes). I expect that malloc overheads absorbed the
overrun in practice, but computing a correct upper bound is a very simple
change.
Tim Peters [Wed, 19 Dec 2001 04:11:07 +0000 (04:11 +0000)]
SF bug #494668: PUSH() should assert-fail on overflow.
eval_frame(): Added asserts to the top of the eval loop, to verify
that the eval stack pointer is in bounds, plus some comments.
Tim Peters [Tue, 18 Dec 2001 22:32:40 +0000 (22:32 +0000)]
TemporaryFileWrapper: cache the value of os.unlink for use by __del__,
to prevent mysterious errors at shutdown due to "os.unlink" turning into
"None.unlink".
Guido van Rossum [Tue, 18 Dec 2001 22:22:25 +0000 (22:22 +0000)]
Move the helper class _closedsocket *into* the _socketobject class.
This way, when a socket object is deleted after the socket module has
already been zapped by module shutdown, we don't get annoying warnings
about exceptions in __del__ methods.
Thomas Heller [Tue, 18 Dec 2001 20:13:40 +0000 (20:13 +0000)]
Second part of fix for bug [#483982] Python 2.2b2 bdist_wininst
crashes.
If no external zip-utility is found, the archive is created by the
zipfile module, which behaves different now than in 2.1: if the
zip-file is created in the root directory if the distribution, it will
contain an (empty) version of itself.
This triggered the above bug - so it's better to create the zip-file
far away in the TMP directory.
Guido van Rossum [Mon, 17 Dec 2001 17:14:22 +0000 (17:14 +0000)]
- PyType_Ready(): Initialize the ob_type field to &PyType_Type if it's
NULL, so that you can call PyType_Ready() to initialize a type that
is to be separately compiled with C on Windows.
inherit_special(): Add a long comment explaining that you have to set
tp_new if your base class is PyBaseObject_Type.
Barry Warsaw [Mon, 17 Dec 2001 15:40:24 +0000 (15:40 +0000)]
Get rid of the stupid backslash in front of the column zero open
paren. This was there to worm around a stupid XEmacs bug, but since I
can't tickle the bug in newer XEmacsen (just tried w/21.4.5) it's
possible the problem has been fixed. We shouldn't have to be working
around editor bugs anyway.
If it crops up again, I'll report it (again) to the XEmacs crowd.
Steve Purcell [Mon, 17 Dec 2001 10:13:17 +0000 (10:13 +0000)]
Synch with pyunit CVS:
- Adds Fred's patch 487662: "Better error message for assertEqual"
- Removed small portion of code unused after Guido's patch
490119: "Don't treat ^C as error"
Tim Peters [Mon, 17 Dec 2001 01:27:01 +0000 (01:27 +0000)]
David Abrahams tried to compile this as a separate DLL under MSVC, and
got a barrage of compile errors that didn't make sense to the C++ brain:
MSVC does not allow C (but does allow C++) initializers to contain
data addresses supplied by other DLLs. So changed the initializers here
to use dummy nulls, and changed module init to plug in the foreign
addresses at runtime (manually simulating what C++ does by magic). Tested
on Windows, and Guido tested on Linux (thanks!). BTW, the *point* is that
people are going to use this module as a template for writing their own
subtypes, and it's unusual for extension authors to build their extensions
into Python directly (separate DLLs are the norm on Windows); so it's
better if we give them a template that works <wink>.
Tim Peters [Sun, 16 Dec 2001 19:11:44 +0000 (19:11 +0000)]
_PyEval_SliceIndex(): Repaired the comments, and added XXX comments
about its dubious treatment of NULL (also opened a bug report on that,
but don't want to risk changing it this late in the 2.2 game).
Tim Peters [Sat, 15 Dec 2001 22:12:47 +0000 (22:12 +0000)]
SF patch 493739 2 Bugfixes for 2.2c1 (RISC OS specific), from
Dietmar Schwertberger.
Bugfix candidate.
"""
RISCOS/Modules/getpath_riscos.c:
Include trailing '\0' when using strncpy [copy
strlen(...)+1 characters].
Lib/plat-riscos/riscospath.py:
Use riscosmodule.expand for os.path.abspath.
[fixes problems with site.py where
abspath("<Python$Dir>") returned
join(os.getcwd(), "<Python$Dir>") as e.g.
"SCSI::SCSI4.$.<Python$Dir>" because "<Python$Dir>"
wasn't recognised as an absolute path.]
"""
Jack Jansen [Sat, 15 Dec 2001 00:23:35 +0000 (00:23 +0000)]
Finally CW7 allows me to replace the continually-in-need-of-updating exports files with one 6-line anti-export-file. Yeah! (Thanks Alex, for reminding me:-)
Jack Jansen [Fri, 14 Dec 2001 21:28:53 +0000 (21:28 +0000)]
Added test_socketserver and test_unicode_file to tests expected to be
skipped on Mac OS X. Not sure yet about test_locale.py: this may be
due to my copy of Mac OS X (although it talks english fine enough).
Barry Warsaw [Fri, 14 Dec 2001 20:34:20 +0000 (20:34 +0000)]
send(), ehlo(): Integrate patch #487310 by Fazal Majid. Consistently
call self.close() just before raising SMTPServerDisconnected. This
allows you to, e.g. reconnect after a server timeout.
Fred Drake [Fri, 14 Dec 2001 16:57:31 +0000 (16:57 +0000)]
Work around the problem of spaces after a "}" being dropped by LaTeX2HTML if
they were represented by newlines in the document source.
Partially fixes SF bug #493243.
Fred Drake [Fri, 14 Dec 2001 16:54:53 +0000 (16:54 +0000)]
The valign attribute to control the vertical alignment of a table cell should
be on the <tr> element, not the <table> element.
Partially fixes SF bug #493243.
Jeremy Hylton [Fri, 14 Dec 2001 16:15:11 +0000 (16:15 +0000)]
Partial fix for problem in SF buf #487458
Rev 1.20 introduced a call to getpeername() in the dispatcher
constructor. This only works for a connected socket. Apparently
earlier versions of the code worked with un-connected sockets, e.g. a
listening socket.
It's not clear that the code is supposed to accept these sockets,
because it sets self.connected = 1 when passed a socket. But it's
also not clear that it should be a fatal error to pass a listening
socket.
The solution, for now, is to put a try/except around the getpeername()
call and continue if it fails. The self.addr attribute is used
primarily (only?) to produce a nice repr for the object, so it hardly
matters. If there is a real error on a connected socket, it's likely
that subsequent calls will fail too.
Jack Jansen [Fri, 14 Dec 2001 14:31:15 +0000 (14:31 +0000)]
Add default values for options in the class init routine, not in the convenience wrapper function: distutils uses the class directly. Fixes bug #492665.
Guido van Rossum [Fri, 14 Dec 2001 04:19:56 +0000 (04:19 +0000)]
(Merge into trunk.)
Fix for SF bug #492345. (I could've sworn I checked this in, but
apparently I didn't!)
This code:
class Classic:
pass
class New(Classic):
__metaclass__ = type
attempts to create a new-style class with only classic bases -- but it
doesn't work right. Attempts to fix it so it works caused problems
elsewhere, so I'm now raising a TypeError in this case.
Fred Drake [Thu, 13 Dec 2001 17:20:32 +0000 (17:20 +0000)]
Replace the "Cookbook approach" with the approach documented in
PC/example_nt/readme.txt; this one does not rely on any external scripts.
This "fixes" SF bug #221671 and most of SF bug #225003.