| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[ 526072 ] pickling os.stat results round II
structseq's constructors can now take "invisible" fields in a dict.
Gave the constructors better error messages.
their __reduce__ method puts these fields in a dict.
(this is all in aid of getting os.stat_result's to pickle portably)
Also fixes
[ 526039 ] devious code can crash structseqs
Thought needed about how much of this counts as a bugfix. Certainly
#526039 needs to be fixed.
|
|
|
|
|
|
|
|
| |
[ 496873 ] structseqs unpicklable
by adding a __reduce__ method to structseqs.
Will also commit this to the 2.2.1 branch momentarily.
|
|
|
|
|
|
|
|
|
|
|
| |
platform realloc(p, 0) returns NULL, so MALLOC_ZERO_RETURNS_NULL can
be correctly undefined yet realloc(p, 0) can return NULL anyway.
Prevent realloc(p, 0) doing free(p) and returning NULL via a different
hack. Would probably be better to get rid of MALLOC_ZERO_RETURNS_NULL
entirely.
Bugfix candidate.
|
|
|
|
|
|
| |
copy the sign too. Added a test to test_descr to ensure that it does.
Bugfix candidate.
|
|
|
|
| |
to fix was almost certainly a bug in _PyLong_Copy (which I'll fix next).
|
|
|
|
|
|
|
|
|
|
| |
Due to the bizarre definition of _PyLong_Copy(), creating an instance
of a subclass of long with a negative value could cause core dumps
later on. Unfortunately it looks like the behavior of _PyLong_Copy()
is quite intentional, so the fix is more work than feels comfortable.
This fix is almost, but not quite, the code that Naofumi Honda added;
in addition, I added a test case.
|
|
|
|
|
|
| |
Objects/
stringobject.c
unicodeobject.c
|
|
|
|
|
|
|
|
|
|
|
|
| |
Objects/
fileobject.c
stringobject.c
unicodeobject.c
This commit doesn't include the cleanup patches for stringobject.c and
unicodeobject.c which are shown separately in the patch manager. Those
patches will be regenerated and applied in a subsequent commit, so as
to preserve a fallback position (this commit to those files).
|
|
|
|
| |
fixes #504343. 2.2.1 candidate.
|
| |
|
|
|
|
|
|
|
| |
This fixes SF bug #514858 (Gregory Smith): complex not entirely
immutable
2.2.1 Bugfix candidate!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix for the UTF-8 decoder: it will now accept isolated surrogates
(previously it raised an exception which causes round-trips to
fail).
Added new tests for UTF-8 round-trip safety (we rely on UTF-8 for
marshalling Unicode objects, so we better make sure it works for
all Unicode code points, including isolated surrogates).
Bumped the PYC magic in a non-standard way -- please review. This
was needed because the old PYC format used illegal UTF-8 sequences
for isolated high surrogates which now raise an exception.
|
| |
|
| |
|
|
|
|
| |
bug related to lone high surrogates.
|
|
|
|
|
|
| |
Fix SF bug #511603: Error calling str on subclass of int
Explicitly fill in tp_str with the same pointer as tp_repr.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This makes xreadlines behave like all other file methods
(other than close() which just returns).
|
|
|
|
| |
both are proxy objects.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
unescaped newlines in strings.
|
|
|
|
|
|
| |
Montanaro)
(With minor adjustments.)
|
|
|
|
| |
%300s should be %.300s, twice.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
and only if there is no second arg.
This closes SF patch #479551.
|
|
|
|
|
|
|
| |
delivered bizarre results. Check float_divmod for a Py_NotImplemented
return and pass it along (instead of treating Py_NotImplemented as a
2-tuple).
CONVERT_TO_DOUBLE: Added comments; this macro is obscure.
|
|
|
|
| |
division functions, and rename to float_floor_div.
|
|
|
|
|
|
|
| |
PyDict_UpdateFromSeq2(): removed it.
PyDict_MergeFromSeq2(): made it public and documented it.
PyDict_Merge() docs: updated to reveal <wink> that the second
argument can be any mapping object.
|
|
|
|
|
|
| |
references, we do not allow any outstanding exceptions "leak" into the
callback's execution state.
This closes SF bug #478534.
|
|
|
|
| |
bug as the C code. :-(
|
| |
|
|
|
|
|
|
|
|
|
|
| |
no get function was defined, the property's doc string was
inaccessible. This was because the test for prop_get was made
*before* the test for a NULL/None object argument.
Also changed the property class defined in Python in a comment to test
for NULL to decide between get and delete; this makes it less Python
but then, assigning None to a property doesn't delete it!
|
|
|
|
|
|
| |
PyString_FromString():
Since the length of the string is already being stored in size,
changed the strcpy() to a memcpy() for a small speed improvement.
|
|
|
|
|
|
|
|
|
|
|
| |
out the for loop at the end intended to zero out new items wasn't
doing anything, because sv->ob_size was already equal to newsize. The
fix slightly refactors the function, introducing a variable oldsize
and doing away with sizediff (which was used only once), and using
oldsize and newsize consistently. I also added comments explaining
what the two for loops do. (Looking at the CVS annotation of this
function, it's no miracle a bug crept in -- this has been patched by
many different folks! :-)
|
|
|
|
| |
check it. Added an assert() to that effect.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is best reproduced by
while 1:
class U(unicode):
pass
U(u"xxxxxx")
The unicode_dealloc() code wasn't properly freeing the str and defenc
fields of the Unicode object when freeing a subtype instance. Fixed
this by a subtle refactoring that actually reduces the amount of code
slightly.
|
|
|
|
|
|
|
|
|
|
|
|
| |
PyCell_Set() incremenets the reference count, so the earlier XINCREF
causes a leak.
Also make a number of small performance improvements to the code on
the assumption that most of the time variables are not rebound across
a FastToLocals() / LocalsToFast() pair.
Replace uses of PyCell_Set() and PyCell_Get() with PyCell_SET() and
PyCell_GET(), since the frame is guaranteed to contain cells.
|
|
|
|
|
|
|
|
|
|
|
| |
Add a missing DECREF in an obscure corner. If the str() or repr() of
an object passed to a string interpolation -- e.g. "%s" % obj --
returns a non-string, the returned object was leaked.
Repair an indentation glitch.
Replace a bunch of PyString_AsString() calls (and their ilk) with
macros.
|
|
|
|
|
| |
the work each time it found another base class. All the work is
contiguous, so we might as well do it all at once at the end.
|
|
|
|
|
|
| |
It was easier than I thought, assuming that no other things contribute
to the instance size besides slots -- a pretty good bet. With a test
suite, no less!
|
|
|
|
|
|
|
|
|
| |
happy if one could delete the __dict__ attribute of an instance. I
love to make Jim happy, so here goes...
- New-style objects now support deleting their __dict__. This is for
all intents and purposes equivalent to assigning a brand new empty
dictionary, but saves space if the object is not used further.
|
|
|
|
|
|
|
| |
int_mul(): new and vastly simpler overflow checking. Whether it's
faster or slower will likely vary across platforms, favoring boxes
with fast floating point. OTOH, we no longer have to worry about
people shipping broken LONG_BIT definitions <0.9 wink>.
|
|
|
|
|
|
|
| |
There's now a new structmember code, T_OBJECT_EX, which is used for
all __slot__ variables (except __weakref__, which has special behavior
anyway). This new code raises AttributeError when the variable is
NULL rather than converting NULL to None.
|
|
|
|
|
| |
result would overflow an int. Check for this. (SF bug #488482, Armin
Rigo.)
|
|
|
|
|
|
|
| |
string object (or a Unicode that's trivially converted to ASCII).
PyObject_GetAttr(): add an 'else' to the Unicode test like
PyObject_SetAttr() already has.
|
|
|
|
|
| |
Py_DECREF(arg) after the PyErr_NoMemory() call. (Armin Rigo, SF bug
#488477.)
|