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
Christian Heimes
e93237dfcc #1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available. 2007-12-19 02:37:44 +00:00
Martin v. Löwis
6819210b9e PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
2007-07-21 06:55:02 +00:00
Neal Norwitz
a84dcd7546 Stop using METH_OLDARGS implicitly 2007-05-22 07:16:44 +00:00
Kristján Valur Jónsson
67387fb4aa Make pythoncore compile cleanly with VisualStudio 2005. Used an explicit typecast to get a 64 bit integer, and undefined the Yield macro that conflicts with winbase.h 2007-04-25 00:17:39 +00:00
Raymond Hettinger
7a3d41f4ca Bug #1563759: struct.unpack doens't support buffer protocol objects 2007-04-05 18:00:03 +00:00
Martin v. Löwis
aef4c6bc00 Patch #1610575: Add support for _Bool to struct. 2007-01-21 09:33:07 +00:00
Bob Ippolito
e6c9f982a0 Fix #1530559, struct.pack raises TypeError where it used to convert.
Passing float arguments to struct.pack when integers are expected
now triggers a DeprecationWarning.
2006-08-04 23:59:21 +00:00
Neal Norwitz
07aadb14f3 Add PyErr_WarnEx() so C code can pass the stacklevel to warnings.warn().
This provides the proper warning for struct.pack().
PyErr_Warn() is now deprecated in favor of PyErr_WarnEx().
As mentioned by Tim Peters on python-dev.
2006-07-30 06:55:48 +00:00
Neal Norwitz
3c5431e132 Wrap some long lines
Top/Bottom factor out some common expressions
Add a XXX comment about widing offset.
2006-06-11 05:45:25 +00:00
Tim Peters
5ec2e85d0c s_methods[]: Stop compiler warnings by casting
s_unpack_from to PyCFunction.
2006-06-04 15:49:07 +00:00
Martin Blais
af2ae72cb2 Fixes in struct and socket from merge reviews.
- Following Guido's comments, renamed

  * pack_to -> pack_into
  * recv_buf -> recv_into
  * recvfrom_buf -> recvfrom_into

- Made fixes to _struct.c according to Neal Norwitz comments on the checkins
  list.

- Converted some ints into the appropriate -- I hope -- ssize_t and size_t.
2006-06-04 13:49:49 +00:00
Tim Peters
72270c220e Repaired error in new comment. 2006-05-31 15:34:37 +00:00
Tim Peters
d6a6f023c8 _range_error(): Speed and simplify (there's no real need for
loops here).  Assert that size_t is actually big enough, and
that f->size is at least one.  Wrap a long line.
2006-05-31 15:33:22 +00:00
Tim Peters
c2b550e16e Trimmed trailing whitespace. 2006-05-31 14:28:07 +00:00
Neal Norwitz
971ea11e4c Calculate smallest properly (it was off by one) and use proper ssize_t types for Win64 2006-05-31 07:43:27 +00:00
Bob Ippolito
4182a75571 Change wrapping terminology to overflow masking 2006-05-30 17:37:54 +00:00
Bob Ippolito
2fd3977a9d struct: modulo math plus warning on all endian-explicit formats for compatibility with older struct usage (ugly) 2006-05-29 22:55:48 +00:00
Armin Rigo
162997efb1 Silence a warning. 2006-05-29 17:59:47 +00:00
Bob Ippolito
28b2686260 simplify the struct code a bit (no functional changes) 2006-05-29 15:47:29 +00:00
Georg Brandl
c26025c562 Fix ref-antileak in _struct.c which eventually lead to deallocating None. 2006-05-28 21:42:54 +00:00
Bob Ippolito
cd51ca5b11 fix struct regression on 64-bit platforms 2006-05-27 15:53:49 +00:00
Bob Ippolito
1fcdc232db Fix up struct docstrings, add struct.pack_to function for symmetry 2006-05-27 12:11:36 +00:00
Bob Ippolito
90bd0a554e Remove the range checking and int usage #defines from _struct and strip out the now-dead code 2006-05-27 11:47:12 +00:00
Bob Ippolito
aa70a17e13 enable all of the struct tests, use ssize_t, fix some whitespace 2006-05-26 20:25:23 +00:00
Tim Peters
735ae484f0 Repair Windows compiler warnings about mixing
signed and unsigned integral types in comparisons.
2006-05-26 16:49:28 +00:00