Victor Stinner
a482dc500b
bpo-40602: Write unit tests for _Py_hashtable_t (GH-20091)
...
Cleanup also hashtable.c.
Rename _Py_hashtable_t members:
* Rename entries to nentries
* Rename num_buckets to nbuckets
2020-05-14 21:55:47 +02:00
Victor Stinner
5b0a30354d
bpo-40609: _Py_hashtable_t values become void* (GH-20065)
...
_Py_hashtable_t values become regular "void *" pointers.
* Add _Py_hashtable_entry_t.data member
* Remove _Py_hashtable_t.data_size member
* Remove _Py_hashtable_t.get_func member. It is no longer needed
to specialize _Py_hashtable_get() for a specific value size, since
all entries now have the same size (void*).
* Remove the following macros:
* _Py_HASHTABLE_GET()
* _Py_HASHTABLE_SET()
* _Py_HASHTABLE_SET_NODATA()
* _Py_HASHTABLE_POP()
* Rename _Py_hashtable_pop() to _Py_hashtable_steal()
* _Py_hashtable_foreach() callback now gets key and value rather than
entry.
* Remove _Py_hashtable_value_destroy_func type. value_destroy_func
callback now only has a single parameter: data (void*).
2020-05-13 04:40:30 +02:00
Victor Stinner
2d0a3d682f
bpo-40609: Add destroy functions to _Py_hashtable (GH-20062)
...
Add key_destroy_func and value_destroy_func parameters to
_Py_hashtable_new_full().
marshal.c and _tracemalloc.c use these destroy functions.
2020-05-13 02:50:18 +02:00
Victor Stinner
f9b3b582b8
bpo-40609: Remove _Py_hashtable_t.key_size (GH-20060)
...
Rewrite _Py_hashtable_t type to always store the key as
a "const void *" pointer. Add an explicit "key" member to
_Py_hashtable_entry_t.
Remove _Py_hashtable_t.key_size member.
hash and compare functions drop their hash table parameter, and their
'key' parameter type becomes "const void *".
2020-05-13 02:26:02 +02:00
Victor Stinner
b617993b7c
bpo-40602: Rename hashtable.h to pycore_hashtable.h (GH-20044)
...
* Move Modules/hashtable.h to Include/internal/pycore_hashtable.h
* Move Modules/hashtable.c to Python/hashtable.c
* Python is now linked to hashtable.c. _tracemalloc is no longer
linked to hashtable.c. Previously, marshal.c got hashtable.c via
_tracemalloc.c which is built as a builtin module.
2020-05-12 02:42:19 +02:00
Serhiy Storchaka
2c003eff8f
bpo-39943: Clean up marshal.c. (GH-19236)
...
* Add consts.
* Remove redundant casts and checks.
* Use concrete C API macros.
* Avoid raising and silencing OverflowError for ints.
2020-03-31 23:23:21 +03:00
Andy Lester
e6be9b59a9
closes bpo-39605: Fix some casts to not cast away const. (GH-18453)
...
gcc -Wcast-qual turns up a number of instances of casting away constness of pointers. Some of these can be safely modified, by either:
Adding the const to the type cast, as in:
- return _PyUnicode_FromUCS1((unsigned char*)s, size);
+ return _PyUnicode_FromUCS1((const unsigned char*)s, size);
or, Removing the cast entirely, because it's not necessary (but probably was at one time), as in:
- PyDTrace_FUNCTION_ENTRY((char *)filename, (char *)funcname, lineno);
+ PyDTrace_FUNCTION_ENTRY(filename, funcname, lineno);
These changes will not change code, but they will make it much easier to check for errors in consts
2020-02-11 18:28:35 -08:00
Victor Stinner
60ac6ed557
bpo-39573: Use Py_SET_SIZE() function (GH-18402)
...
Replace direct acccess to PyVarObject.ob_size with usage of
the Py_SET_SIZE() function.
2020-02-07 23:18:08 +01:00
Victor Stinner
a102ed7d2f
bpo-39573: Use Py_TYPE() macro in Python and Include directories (GH-18391)
...
Replace direct access to PyObject.ob_type with Py_TYPE().
2020-02-07 02:24:48 +01:00
Brandt Bucher
33b671e724
bpo-38823: Fix refleak in marshal init error path (GH-17260)
2019-11-20 01:59:32 +01:00
Jeroen Demeyer
59ad110d7a
bpo-37547: add _PyObject_CallMethodOneArg (GH-14685)
2019-07-11 17:59:05 +09:00
Pablo Galindo
4a2edc34a4
bpo-37221: Add PyCode_NewWithPosOnlyArgs to be used internally and set PyCode_New as a compatibility wrapper (GH-13959)
...
Add PyCode_NewEx to be used internally and set PyCode_New as a compatibility wrapper
2019-07-01 12:35:05 +02:00
Pablo Galindo
8c77b8cb91
bpo-36540: PEP 570 -- Implementation (GH-12701)
...
This commit contains the implementation of PEP570: Python positional-only parameters.
* Update Grammar/Grammar with new typedarglist and varargslist
* Regenerate grammar files
* Update and regenerate AST related files
* Update code object
* Update marshal.c
* Update compiler and symtable
* Regenerate importlib files
* Update callable objects
* Implement positional-only args logic in ceval.c
* Regenerate frozen data
* Update standard library to account for positional-only args
* Add test file for positional-only args
* Update other test files to account for positional-only args
* Add News entry
* Update inspect module and related tests
2019-04-29 13:36:57 +01:00
Zackery Spytz
4c49da0cb7
bpo-35436: Add missing PyErr_NoMemory() calls and other minor bug fixes. (GH-11015)
...
Set MemoryError when appropriate, add missing failure checks,
and fix some potential leaks.
2018-12-07 12:11:30 +02:00
Serhiy Storchaka
c5734998d9
bpo-33720: Refactor marshalling/unmarshalling floats. (GH-8071)
2018-07-24 10:55:47 +03:00
Steve Dower
2a4a62ba4a
bpo-33720: Reduces maximum marshal recursion depth on release builds. (GH-7401)
2018-06-04 13:25:00 -07:00
Serhiy Storchaka
00987f6230
bpo-32011: Revert "Issue #15480 : Remove the deprecated and unused TYPE_INT64 code from marshal." ( #4381 )
...
Simplify the reverted code.
This reverts commit e9bbe8b87b
.
2017-11-15 17:41:05 +02:00
Benjamin Peterson
c988ae01fe
remove current_filename optimization from marshal ( #3423 ) (closes bpo-31384)
2017-09-07 10:49:12 -07:00
Stefan Krah
f432a3234f
bpo-30923: Silence fall-through warnings included in -Wextra since gcc-7.0. ( #3157 )
2017-08-21 13:09:59 +02:00
Serhiy Storchaka
0767ad40bf
bpo-20185: Convert the marshal module to Argument Clinic. ( #541 )
...
Based on patch by Vajrasky Kok.
2017-03-12 09:20:15 +02:00
Serhiy Storchaka
c611a5b1d4
bpo-29746: Update marshal docs to Python 3. ( #547 )
2017-03-12 08:53:22 +02:00
Victor Stinner
55ba38a480
Use _PyObject_CallMethodIdObjArgs()
...
Issue #28915 : Replace _PyObject_CallMethodId() with
_PyObject_CallMethodIdObjArgs() in various modules when the format string was
only made of "O" formats, PyObject* arguments.
_PyObject_CallMethodIdObjArgs() avoids the creation of a temporary tuple and
doesn't have to parse a format string.
2016-12-09 16:09:30 +01:00
Victor Stinner
4778eab1f2
Replace PyObject_CallFunction() with fastcall
...
Replace
PyObject_CallFunction(func, "O", arg)
and
PyObject_CallFunction(func, "O", arg, NULL)
with
_PyObject_CallArg1(func, arg)
Replace
PyObject_CallFunction(func, NULL)
with
_PyObject_CallNoArg(func)
_PyObject_CallNoArg() and _PyObject_CallArg1() are simpler and don't allocate
memory on the C stack.
2016-12-01 14:51:04 +01:00
Christian Heimes
f051e43b22
Issue #28126 : Replace Py_MEMCPY with memcpy(). Visual Studio can properly optimize memcpy().
2016-09-13 20:22:02 +02:00
Victor Stinner
5dacbd4c42
Cleanup hashtable.h
...
Issue #26588 :
* Pass the hash table rather than the key size to hash and compare functions
* _Py_HASHTABLE_READ_KEY() and _Py_HASHTABLE_ENTRY_READ_KEY() macros now expect
the hash table as the first parameter, rather than the key size
* tracemalloc_get_traces_fill(): use _Py_HASHTABLE_ENTRY_READ_DATA() rather
than pointer dereference
* Remove the _Py_HASHTABLE_ENTRY_WRITE_PKEY() macro
* Move "PKEY" and "PDATA" macros inside hashtable.c
2016-03-23 09:52:13 +01:00
Victor Stinner
e8c6b2fd1b
Issue #26588 :
...
* _Py_HASHTABLE_ENTRY_DATA: change type from "char *" to "const void *"
* Add _Py_HASHTABLE_ENTRY_WRITE_PKEY() macro
* Rename _Py_HASHTABLE_ENTRY_WRITE_DATA() macro to
_Py_HASHTABLE_ENTRY_WRITE_PDATA()
* Add _Py_HASHTABLE_ENTRY_WRITE_DATA() macro
2016-03-23 09:25:01 +01:00
Victor Stinner
285cf0a601
hashtable.h now supports keys of any size
...
Issue #26588 : hashtable.h now supports keys of any size, not only
sizeof(void*). It allows to support key larger than sizeof(void*), but also to
use less memory for key smaller than sizeof(void*).
2016-03-21 22:00:58 +01:00
Victor Stinner
322bc12c31
Ooops, revert changeset ea9efa06c137
...
Change pushed by mistake, the patch is still under review :-/
"""
_tracemalloc: add domain to trace keys
* hashtable.h: key has now a variable size
* _tracemalloc uses (pointer: void*, domain: unsigned int) as key for traces
"""
2016-03-21 14:36:39 +01:00
Victor Stinner
51b846c47a
_tracemalloc: add domain to trace keys
...
* hashtable.h: key has now a variable size
* _tracemalloc uses (pointer: void*, domain: unsigned int) as key for traces
2016-03-18 21:52:22 +01:00
Victor Stinner
1aa78938b0
Issue #26146 : marshal.loads() now uses the empty frozenset singleton
2016-01-23 14:15:48 +01:00
Serhiy Storchaka
ef1585eb9a
Issue #25923 : Added more const qualifiers to signatures of static and private functions.
2015-12-25 20:01:53 +02:00
Serhiy Storchaka
225821c653
Issue #25899 : Converted non-ASCII characters in docstrings and manpage
...
to ASCII replacements. Original patch by Chris Angelico.
2015-12-18 13:05:04 +02:00
Victor Stinner
e134a7fe36
Issue #23752 : _Py_fstat() is now responsible to raise the Python exception
...
Add _Py_fstat_noraise() function when a Python exception is not welcome.
2015-03-30 10:09:31 +02:00
Victor Stinner
f329878e74
Issue #23753 : Python doesn't support anymore platforms without stat() or
...
fstat(), these functions are always required.
Remove HAVE_STAT and HAVE_FSTAT defines, and stop supporting DONT_HAVE_STAT and
DONT_HAVE_FSTAT.
2015-03-24 10:27:50 +01:00
Steve Dower
f2f373f593
Issue #23152 : Implement _Py_fstat() to support files larger than 2 GB on Windows.
...
fstat() may fail with EOVERFLOW on files larger than 2 GB because the file size type is an signed 32-bit integer.
2015-02-21 08:44:05 -08:00
Serhiy Storchaka
26861b0b29
Issue #23450 : Fixed possible integer overflows.
2015-02-16 20:52:17 +02:00
Serhiy Storchaka
c07422c119
Splitted the WFILE structure to WFILE and RFILE.
2015-02-11 16:18:09 +02:00
Serhiy Storchaka
c1efe5f039
Issue #23344 : marshal.dumps() is now 20-25% faster on average.
2015-02-11 15:54:54 +02:00
Serhiy Storchaka
ce921c62cc
Issue #20416 : marshal.dumps() with protocols 3 and 4 is now 40-50% faster on
...
average.
2015-02-11 15:53:31 +02:00
Serhiy Storchaka
aaef05f003
Fixed memory leak in marshal.
2015-01-28 17:11:12 +02:00
Serhiy Storchaka
000daaee57
Fixed memory leak in marshal.
2015-01-28 17:10:48 +02:00
Serhiy Storchaka
b757c83ec6
Issue #22581 : Use more "bytes-like object" throughout the docs and comments.
2014-12-05 22:25:22 +02:00
Serhiy Storchaka
92bf919ed0
Issue #22581 : Use more "bytes-like object" throughout the docs and comments.
2014-12-05 22:26:10 +02:00
Steve Dower
f6c69e6cc9
#22734 marshal needs a lower stack depth for debug builds on Windows
2014-11-01 15:15:16 -07:00
Victor Stinner
45e8e2f218
Issue #21490 : Add new C macros: Py_ABS() and Py_STRINGIFY()
...
Keep _Py_STRINGIZE() in PC/pyconfig.h to not introduce a dependency between
pyconfig.h and pymacros.h.
2014-05-14 17:24:35 +02:00
Victor Stinner
da062558db
Fix compiler warning (on Windows 64-bit): explicit cast Py_ssize_t to unsigned
...
char, n is in range [0; 255] (a tuple cannot have a negative length)
2013-11-16 00:13:29 +01:00
Victor Stinner
359fabc19f
Issue #19437 : Cleanup r_ref() of the marshal module
2013-10-31 17:09:01 +01:00
Victor Stinner
d5cae6f143
Issue #19437 : Fix r_object() of marshal module, handle PyDict_SetItem() failure
...
for TYPE_DICT and stop immedialty on first r_object() failure
2013-10-31 17:14:52 +01:00
Victor Stinner
b1b7b1834b
Issue #19437 : Fix r_object() of marshal module, handle r_byte() failure for
...
TYPE_SMALL_TUPLE
2013-10-31 17:07:08 +01:00
Victor Stinner
763b0d19c9
Issue #19437 : Fix r_PyLong() of marshal module, stop immediatly at first
...
failure, don't read any more data
2013-10-31 16:56:38 +01:00
Serhiy Storchaka
c679227e31
Issue #1772673 : The type of `char*` arguments now changed to `const char*`.
2013-10-19 21:03:34 +03:00
Antoine Pitrou
42c25f5581
Close #19260 : remove outdated comment in marshal.c
2013-10-14 20:50:32 +02:00
Kristján Valur Jónsson
0a7697b718
Catch a few extra error cases in marshal.c
2013-10-13 15:19:56 +00:00
Kristján Valur Jónsson
5983258bf2
Issue #19219 Remove a lot of "retval = NULL" statements, now that retval
...
is pre-initialized to that value. Test show a 5% speedup as a bonus.
2013-10-13 13:41:59 +00:00
Christian Heimes
3572842c19
Issue #19219 : retval may be used uninitialized value
...
CID 486239: Uninitialized pointer read (UNINIT)
2013-10-13 02:29:06 +02:00
Antoine Pitrou
b30f271299
Try to fix weird assertion error on the Fedora buildbot.
2013-10-12 23:14:47 +02:00
Antoine Pitrou
1164dfcb86
Issue #19219 : Speed up marshal.loads(), and make pyc files slightly (5% to 10%) smaller.
2013-10-12 22:25:39 +02:00
Serhiy Storchaka
46e1ce214b
Issue #18783 : Removed existing mentions of Python long type in docstrings,
...
error messages and comments.
2013-08-27 20:17:03 +03:00
Serhiy Storchaka
9594942716
Issue #18783 : Removed existing mentions of Python long type in docstrings,
...
error messages and comments.
2013-08-27 19:40:23 +03:00
Antoine Pitrou
9ed5f27266
Issue #18722 : Remove uses of the "register" keyword in C code.
2013-08-13 20:18:52 +02:00
Serhiy Storchaka
f9e6672ae8
Issue #17872 : Fix a segfault in marshal.load() when input stream returns
...
more bytes than requested.
2013-07-11 22:28:18 +03:00
Serhiy Storchaka
3641a74e1c
Issue #17872 : Fix a segfault in marshal.load() when input stream returns
...
more bytes than requested.
2013-07-11 22:20:47 +03:00
Serhiy Storchaka
a155d40ed5
Fix reference leaks introduced by the patch for issue #5308 .
2013-07-11 19:19:47 +03:00
Serhiy Storchaka
dfde2151ed
Fix reference leaks introduced by the patch for issue #5308 .
2013-07-11 19:14:26 +03:00
Victor Stinner
3a8b79d4d2
Issue #18408 : Fix marshal reader for Unicode strings: handle
...
PyUnicode_DecodeUTF8() failure (ex: MemoryError).
2013-07-08 22:23:32 +02:00
Victor Stinner
f1913ca37f
marshal: optimize parsing of empty Unicode strings
...
Don't create a temporary buffer of zeroy byte nor call r_string() if the length
is zero, create directly the empty string.
2013-06-21 19:08:06 +02:00
Antoine Pitrou
e9bbe8b87b
Issue #15480 : Remove the deprecated and unused TYPE_INT64 code from marshal.
...
Initial patch by Daniel Riti.
2013-04-13 22:41:09 +02:00
Kristján Valur Jónsson
6168362509
Issue #16475 : Correctly handle the EOF when reading marshal streams.
2013-03-20 14:26:33 -07:00
Kristján Valur Jónsson
e178187bf6
Issue #16475 : Simplify the interface to r_ref_allocate and improve comments.
2013-03-20 11:43:57 -07:00
Benjamin Peterson
eddb0a7884
fix compiler warning
2013-03-20 00:40:07 -05:00
Benjamin Peterson
605a774a98
Backed out changeset 521232b05b97
2013-03-20 00:39:41 -05:00
Benjamin Peterson
c6dc12484b
fix compiler warning
2013-03-19 23:20:59 -05:00
Kristján Valur Jónsson
d7009c6913
Issue #16475 : Support object instancing, recursion and interned strings
...
in marshal
2013-03-19 18:02:10 -07:00
Serhiy Storchaka
5a1f152d19
Issue #5308 : Raise ValueError when marshalling too large object (a sequence
...
with size >= 2**31), instead of producing illegal marshal data.
2013-02-13 12:11:03 +02:00
Serhiy Storchaka
7e0191170e
Issue #5308 : Raise ValueError when marshalling too large object (a sequence
...
with size >= 2**31), instead of producing illegal marshal data.
2013-02-13 12:08:15 +02:00
Martin v. Löwis
7e39572aa8
Issue #15466 : Stop using TYPE_INT64 in marshal,
...
to make importlib.h (and other byte code files) equal between 32-bit
and 64-bit systems.
2012-07-28 19:44:05 +02:00
Antoine Pitrou
0d3a003f24
- Issue #14177 : marshal.loads() now raises TypeError when given an unicode
...
string. Patch by Guilherme Gonçalves.
2012-03-03 02:38:37 +01:00
Antoine Pitrou
4a90ef0363
Issue #14177 : marshal.loads() now raises TypeError when given an unicode string.
...
Patch by Guilherme Gonçalves.
2012-03-03 02:35:32 +01:00
Antoine Pitrou
1c13f84f55
Simplify code in marshal.c.
2012-03-02 18:22:23 +01:00
Antoine Pitrou
b2677c7397
Issue #14172 : Fix reference leak when marshalling a buffer-like object (other than a bytes object).
2012-03-02 18:16:38 +01:00
Antoine Pitrou
679e9d36f7
Issue #14172 : Fix reference leak when marshalling a buffer-like object (other than a bytes object).
2012-03-02 18:12:43 +01:00
Martin v. Löwis
bd928fef42
Rename _Py_identifier to _Py_IDENTIFIER.
2011-10-14 10:20:37 +02:00
Martin v. Löwis
afe55bba33
Add API for static strings, primarily good for identifiers.
...
Thanks to Konrad Schöbel and Jasper Schulz for helping with the mass-editing.
2011-10-09 10:38:36 +02:00
Martin v. Löwis
d63a3b8beb
Implement PEP 393.
2011-09-28 07:41:54 +02:00
Éric Araujo
2527796a22
Merge from 3.2 ( #10318 , #12255 , #12043 , #12417 and other fixes)
2011-07-29 03:11:09 +02:00
Éric Araujo
6c0ba447bd
Fix style in code added by edba722f3b02
2011-07-26 17:23:57 +02:00
Vinay Sajip
aac0f75b3b
Correct uninitialized data problem in marshal code.
2011-07-02 18:42:21 +01:00
Vinay Sajip
3232284391
Removed breaking typo accidentally introduced during merge with 3.2.
2011-07-02 17:19:51 +01:00
Vinay Sajip
65897a386e
Closes #12291 for 3.3 - merged fix from 3.2.
2011-07-02 17:16:02 +01:00
Vinay Sajip
5bdae3bb7c
Closes #12291 : Fixed bug which was found when doing multiple loads from one stream.
2011-07-02 16:42:47 +01:00
Vinay Sajip
623e8b86af
Removed some unused local variables.
2011-07-02 17:21:37 +01:00
Benjamin Peterson
43b068648e
try to use the same str object for all code filenames when compiling or unmarshalling ( #12190 )
...
This should reduce memory usage.
2011-05-27 09:08:01 -05:00
Benjamin Peterson
d408503b2c
remove unused string WILFE attribute
2011-05-27 07:53:28 -05:00
Antoine Pitrou
f95a1b3c53
Recorded merge of revisions 81029 via svnmerge from
...
svn+ssh://pythondev@svn.python.org/python/trunk
........
r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines
Untabify C files. Will watch buildbots.
........
2010-05-09 15:52:27 +00:00
Antoine Pitrou
5bc7ec9476
Merged revisions 80325 via svnmerge from
...
svn+ssh://pythondev@svn.python.org/python/trunk
........
r80325 | antoine.pitrou | 2010-04-22 00:53:29 +0200 (jeu., 22 avril 2010) | 6 lines
Issue #7332 : Remove the 16KB stack-based buffer in
PyMarshal_ReadLastObjectFromFile, which doesn't bring any noticeable
benefit compared to the dynamic memory allocation fallback. Patch by
Charles-François Natali.
........
2010-04-21 22:56:22 +00:00
Skip Montanaro
ba1e0f46ab
Issue 7147 - remove ability to attempt to build Python without complex number support (was broken anyway)
2009-10-18 14:25:35 +00:00
Mark Dickinson
2683ab04a6
Merged revisions 75141 via svnmerge from
...
svn+ssh://pythondev@svn.python.org/python/trunk
........
r75141 | mark.dickinson | 2009-09-29 20:01:06 +0100 (Tue, 29 Sep 2009) | 3 lines
Issue #7019 : Unmarshalling of bad long data could produce unnormalized
PyLongs. Raise ValueError instead.
........
2009-09-29 19:21:35 +00:00
R. David Murray
dd226eabe9
Merged revisions 72597 via svnmerge from
...
svn+ssh://pythondev@svn.python.org/python/trunk
........
r72597 | r.david.murray | 2009-05-12 20:30:29 -0400 (Tue, 12 May 2009) | 2 lines
Issue 5994: add docstrings to marshal.
........
2009-05-13 12:27:21 +00:00
Martin v. Löwis
e0a2b72e61
Rename the surrogates error handler to surrogatepass.
2009-05-10 08:08:56 +00:00
Mark Dickinson
725bfd8489
Issue #5914 : Add new C-API function PyOS_string_to_double, to complement
...
PyOS_double_to_string, and deprecate PyOS_ascii_strtod and PyOS_ascii_atof.
2009-05-03 20:33:40 +00:00