Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
e9bbe8b8
Commit
e9bbe8b8
authored
Apr 13, 2013
by
Antoine Pitrou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #15480: Remove the deprecated and unused TYPE_INT64 code from marshal.
Initial patch by Daniel Riti.
parent
e2cef885
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
8 additions
and
73 deletions
+8
-73
Lib/test/test_marshal.py
Lib/test/test_marshal.py
+3
-27
Misc/ACKS
Misc/ACKS
+1
-0
Misc/NEWS
Misc/NEWS
+3
-0
Python/marshal.c
Python/marshal.c
+1
-46
No files found.
Lib/test/test_marshal.py
View file @
e9bbe8b8
...
...
@@ -23,36 +23,12 @@ class HelperMixin:
class
IntTestCase
(
unittest
.
TestCase
,
HelperMixin
):
def
test_ints
(
self
):
# Test
the full range of Python ints
.
n
=
sys
.
maxsize
# Test
a range of Python ints larger than the machine word size
.
n
=
sys
.
maxsize
**
2
while
n
:
for
expected
in
(
-
n
,
n
):
self
.
helper
(
expected
)
n
=
n
>>
1
def
test_int64
(
self
):
# Simulate int marshaling on a 64-bit box. This is most interesting if
# we're running the test on a 32-bit box, of course.
def
to_little_endian_string
(
value
,
nbytes
):
b
=
bytearray
()
for
i
in
range
(
nbytes
):
b
.
append
(
value
&
0xff
)
value
>>=
8
return
b
maxint64
=
(
1
<<
63
)
-
1
minint64
=
-
maxint64
-
1
for
base
in
maxint64
,
minint64
,
-
maxint64
,
-
(
minint64
>>
1
):
while
base
:
s
=
b'I'
+
to_little_endian_string
(
base
,
8
)
got
=
marshal
.
loads
(
s
)
self
.
assertEqual
(
base
,
got
)
if
base
==
-
1
:
# a fixed-point for shifting right 1
base
=
0
else
:
base
>>=
1
n
=
n
>>
1
def
test_bool
(
self
):
for
b
in
(
True
,
False
):
...
...
Misc/ACKS
View file @
e9bbe8b8
...
...
@@ -1024,6 +1024,7 @@ Nicholas Riley
Jean-Claude Rimbault
Vlad Riscutia
Wes Rishel
Daniel Riti
Juan M. Bello Rivas
Davide Rizzo
Anthony Roach
...
...
Misc/NEWS
View file @
e9bbe8b8
...
...
@@ -44,6 +44,9 @@ Core and Builtins
Library
-------
-
Issue
#
15480
:
Remove
the
deprecated
and
unused
TYPE_INT64
code
from
marshal
.
Initial
patch
by
Daniel
Riti
.
-
Issue
#
2118
:
SMTPException
is
now
a
subclass
of
IOError
.
-
Issue
#
17016
:
Get
rid
of
possible
pointer
wraparounds
and
integer
overflows
...
...
Python/marshal.c
View file @
e9bbe8b8
...
...
@@ -33,10 +33,6 @@
#define TYPE_STOPITER 'S'
#define TYPE_ELLIPSIS '.'
#define TYPE_INT 'i'
/* TYPE_INT64 is deprecated. It is not
generated anymore, and support for reading it
will be removed in Python 3.4. */
#define TYPE_INT64 'I'
#define TYPE_FLOAT 'f'
#define TYPE_BINARY_FLOAT 'g'
#define TYPE_COMPLEX 'x'
...
...
@@ -638,42 +634,6 @@ r_long(RFILE *p)
return
x
;
}
/* r_long64 deals with the TYPE_INT64 code. On a machine with
sizeof(long) > 4, it returns a Python int object, else a Python long
object. Note that w_long64 writes out TYPE_INT if 32 bits is enough,
so there's no inefficiency here in returning a PyLong on 32-bit boxes
for everything written via TYPE_INT64 (i.e., if an int is written via
TYPE_INT64, it *needs* more than 32 bits).
*/
static
PyObject
*
r_long64
(
RFILE
*
p
)
{
PyObject
*
result
=
NULL
;
long
lo4
=
r_long
(
p
);
long
hi4
=
r_long
(
p
);
if
(
!
PyErr_Occurred
())
{
#if SIZEOF_LONG > 4
long
x
=
(
hi4
<<
32
)
|
(
lo4
&
0xFFFFFFFFL
);
result
=
PyLong_FromLong
(
x
);
#else
unsigned
char
buf
[
8
];
int
one
=
1
;
int
is_little_endian
=
(
int
)
*
(
char
*
)
&
one
;
if
(
is_little_endian
)
{
memcpy
(
buf
,
&
lo4
,
4
);
memcpy
(
buf
+
4
,
&
hi4
,
4
);
}
else
{
memcpy
(
buf
,
&
hi4
,
4
);
memcpy
(
buf
+
4
,
&
lo4
,
4
);
}
result
=
_PyLong_FromByteArray
(
buf
,
8
,
is_little_endian
,
1
);
#endif
}
return
result
;
}
static
PyObject
*
r_PyLong
(
RFILE
*
p
)
{
...
...
@@ -871,11 +831,6 @@ r_object(RFILE *p)
R_REF
(
retval
);
break
;
case
TYPE_INT64
:
retval
=
r_long64
(
p
);
R_REF
(
retval
);
break
;
case
TYPE_LONG
:
retval
=
r_PyLong
(
p
);
R_REF
(
retval
);
...
...
@@ -1201,7 +1156,7 @@ r_object(RFILE *p)
PyObject
*
name
=
NULL
;
int
firstlineno
;
PyObject
*
lnotab
=
NULL
;
idx
=
r_ref_reserve
(
flag
,
p
);
if
(
idx
<
0
)
{
retval
=
NULL
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment