Commit Graph

68 Commits

Author SHA1 Message Date
Mark Dickinson
40228912c8 Fix possible undefined behaviour from signed overflow in struct module.
Backport of revisions 81897, 81898 and 81902 from py3k.
2010-06-11 20:27:05 +00:00
Antoine Pitrou
c83ea137d7 Untabify C files. Will watch buildbots. 2010-05-09 14:46:46 +00:00
Mark Dickinson
4f185228b0 A handful of whitespace fixes in Modules/_struct.c. 2010-04-04 21:19:35 +00:00
Mark Dickinson
fdaaa9c9d8 Issue #8300 (__index__ handling in struct.pack): Remove redundant check
and improve test coverage.  Thanks Meador Inge for the patch.
2010-04-04 08:43:04 +00:00
Mark Dickinson
4846a8e828 Issue #8300: Let struct.pack use __index__ to convert and pack non-integers.
Based on a patch by Meador Inge.
2010-04-03 14:05:10 +00:00
Mark Dickinson
2db56878f6 Silence compiler warning. 2010-03-07 17:10:19 +00:00
Mark Dickinson
154b7ad07e Issue #1530559: When packing a non-integer with any integer conversion
code using struct.pack, attempt to convert to an integer first using
the argument's __int__ method (if present).  Also raise a
DeprecationWarning for any such usage of __int__.

This fixes a regression from 2.6, where some (but not all) integer
conversion codes already used __int__.
2010-03-07 16:24:45 +00:00
Mark Dickinson
20d7f6e8f4 Remove the redundant #define: PY_STRUCT_FLOAT_COERCE 2010-03-05 14:50:22 +00:00
Mark Dickinson
1c0c78c61f Fix incorrect stacklevel for DeprecationWarnings originating from the struct module.
Also clean up related tests in test_struct.
The stacklevel fix should be backported to 2.6 once that branch is unfrozen.
2010-03-05 14:36:20 +00:00
Mark Dickinson
3d830828de Issue #7078: _struct.__doc__ was being ignored. Import it into struct.
Also add description of '?' struct format character.  Thanks Gabriel
Genellina for the patch.
2009-10-08 15:54:10 +00:00
Mark Dickinson
716a9ccd3d Eliminate unnecessary get_wrapped_(u)long defines in struct module. 2009-09-27 16:39:28 +00:00
Mark Dickinson
5fd3af24a2 Issue #1523: Remove deprecated overflow masking in struct module, and
make sure that out-of-range values consistently raise struct.error.
2009-07-07 15:08:28 +00:00
Mark Dickinson
24766ba6af Typo in error message 2009-07-07 10:18:22 +00:00
Mark Dickinson
463dc4bf26 Issues #1530559, #1741130: Fix various inconsistencies in struct.pack
integer packing, and reenable some previously broken tests.
2009-07-05 10:01:24 +00:00
Jeffrey Yasskin
7937d939b1 Fix nearly all compilation warnings under Apple gcc-4.0. Tested with OPT="-g
-Wall -Wstrict-prototypes -Werror" in both --with-pydebug mode and --without.
There's still a batch of non-prototype warnings in Xlib.h that I don't know how
to fix.
2009-05-29 03:44:31 +00:00
Georg Brandl
6269fec171 #4228: Pack negative values the same way as 2.4
in struct's L format.
2009-01-01 12:15:31 +00:00
Benjamin Peterson
0225248033 Victor Stinner's patches to check the return result of PyLong_Ssize_t
reviewed by Amaury
2008-09-30 02:11:07 +00:00
Gregory P. Smith
9d53457e59 Merge in release25-maint r60793:
Added checks for integer overflows, contributed by Google. Some are
 only available if asserts are left in the code, in cases where they
 can't be triggered from Python code.
2008-06-11 07:41:16 +00:00
Gregory P. Smith
dd96db63f6 This reverts r63675 based on the discussion in this thread:
http://mail.python.org/pipermail/python-dev/2008-June/079988.html

Python 2.6 should stick with PyString_* in its codebase.  The PyBytes_* names
in the spirit of 3.0 are available via a #define only.  See the email thread.
2008-06-09 04:58:54 +00:00
Christian Heimes
593daf545b Renamed PyString to PyBytes 2008-05-26 12:51:38 +00:00
Thomas Heller
f3c0559b5e Issue 1872: Changed the struct module typecode from 't' to '?', for
compatibility with PEP3118.
2008-03-05 15:34:29 +00:00
Amaury Forgeot d'Arc
588ff93f13 Crashers of the day: Py_CLEAR must be used when there is a chance that the
function can be called recursively.
This was discussed in issue1020188.

In python codebase, all occurrences of Py_[X]DECREF(xxx->yyy) are suspect,
except when they appear in tp_new or tp_dealloc functions, or when
the member cannot be of a user-defined class.
Note that tp_init is not safe.

I do have a (crashing) example for every changed line.
Is it worth adding them to the test suite?

Example:

class SpecialStr(str):
    def __del__(self):
        s.close()

import cStringIO
s = cStringIO.StringIO(SpecialStr("text"))
s.close() # Segfault
2008-02-16 14:34:57 +00:00
Raymond Hettinger
18e08e5e61 clearcache() needs to remove the dict as well as clear it. 2008-01-18 00:10:42 +00:00
Christian Heimes
76d19f68e4 Added _struct._clearcache() for regression tests 2008-01-04 02:54:42 +00:00
Raymond Hettinger
2f6621cce7 Finish-up the struct module optimizations started at the Iceland NFS sprint. 2008-01-04 00:01:15 +00:00