Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
522a6c66
Kaydet (Commit)
522a6c66
authored
May 22, 2007
tarafından
Guido van Rossum
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
bz2 uses bytes everywhere (even for the 'newlines' attribute).
test_bz2 passes.
üst
776152b6
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
113 additions
and
77 deletions
+113
-77
test_bz2.py
Lib/test/test_bz2.py
+16
-16
bz2module.c
Modules/bz2module.c
+97
-61
No files found.
Lib/test/test_bz2.py
Dosyayı görüntüle @
522a6c66
...
@@ -15,9 +15,9 @@ has_cmdline_bunzip2 = sys.platform not in ("win32", "os2emx", "riscos")
...
@@ -15,9 +15,9 @@ has_cmdline_bunzip2 = sys.platform not in ("win32", "os2emx", "riscos")
class
BaseTest
(
unittest
.
TestCase
):
class
BaseTest
(
unittest
.
TestCase
):
"Base for other testcases."
"Base for other testcases."
TEXT
=
'root:x:0:0:root:/root:/bin/bash
\n
bin:x:1:1:bin:/bin:
\n
daemon:x:2:2:daemon:/sbin:
\n
adm:x:3:4:adm:/var/adm:
\n
lp:x:4:7:lp:/var/spool/lpd:
\n
sync:x:5:0:sync:/sbin:/bin/sync
\n
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
\n
halt:x:7:0:halt:/sbin:/sbin/halt
\n
mail:x:8:12:mail:/var/spool/mail:
\n
news:x:9:13:news:/var/spool/news:
\n
uucp:x:10:14:uucp:/var/spool/uucp:
\n
operator:x:11:0:operator:/root:
\n
games:x:12:100:games:/usr/games:
\n
gopher:x:13:30:gopher:/usr/lib/gopher-data:
\n
ftp:x:14:50:FTP User:/var/ftp:/bin/bash
\n
nobody:x:65534:65534:Nobody:/home:
\n
postfix:x:100:101:postfix:/var/spool/postfix:
\n
niemeyer:x:500:500::/home/niemeyer:/bin/bash
\n
postgres:x:101:102:PostgreSQL Server:/var/lib/pgsql:/bin/bash
\n
mysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash
\n
www:x:103:104::/var/www:/bin/false
\n
'
TEXT
=
b
'root:x:0:0:root:/root:/bin/bash
\n
bin:x:1:1:bin:/bin:
\n
daemon:x:2:2:daemon:/sbin:
\n
adm:x:3:4:adm:/var/adm:
\n
lp:x:4:7:lp:/var/spool/lpd:
\n
sync:x:5:0:sync:/sbin:/bin/sync
\n
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
\n
halt:x:7:0:halt:/sbin:/sbin/halt
\n
mail:x:8:12:mail:/var/spool/mail:
\n
news:x:9:13:news:/var/spool/news:
\n
uucp:x:10:14:uucp:/var/spool/uucp:
\n
operator:x:11:0:operator:/root:
\n
games:x:12:100:games:/usr/games:
\n
gopher:x:13:30:gopher:/usr/lib/gopher-data:
\n
ftp:x:14:50:FTP User:/var/ftp:/bin/bash
\n
nobody:x:65534:65534:Nobody:/home:
\n
postfix:x:100:101:postfix:/var/spool/postfix:
\n
niemeyer:x:500:500::/home/niemeyer:/bin/bash
\n
postgres:x:101:102:PostgreSQL Server:/var/lib/pgsql:/bin/bash
\n
mysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash
\n
www:x:103:104::/var/www:/bin/false
\n
'
DATA
=
'BZh91AY&SY.
\xc8
N
\x18\x00\x01
>_
\x80\x00\x10
@
\x02\xff\xf0\x01\x07
n
\x00
?
\xe7\xff\xe0
0
\x01\x99\xaa\x00\xc0\x03
F
\x86\x8c
#&
\x83
F
\x9a\x03\x06\xa6\xd0\xa6\x93
M
\x0f
Q
\xa7\xa8\x06\x80
4hh
\x12
$
\x11\xa4
i4
\xf1
4S
\xd2
<Q
\xb5\x0f
H
\xd3\xd4\xdd\xd5\x87\xbb\xf8\x94\r\x8f\xaf
I
\x12\xe1\xc9\xf8
/E
\x00
pu
\x89\x12
]
\xc9\xbb
DL
\n
Q
\x0e\t
1
\x12\xdf\xa0\xc0\x97\xac
2O9
\x89\x13\x94\x0e\x1c
7
\x0e
d
\x95
I
\x0c\xaa
J
\xa4\x18
L
\x10\x05
#
\x9c\xaf\xba\xbc
/
\x97\x8a
#C
\xc8\xe1\x8c
W
\xf9\xe2\xd0\xd6
M
\xa7\x8b
Xa<e
\x84
t
\xcb
L
\xb3\xa7\xd9\xcd\xd1\xcb\x84
.
\xaf\xb3\xab\xab\xad
`n}
\xa0
lh
\t
E,
\x8e
Z
\x15\x17
VH>
\x88\xe5\xcd
9gd6
\x0b\n\xe9\x9b\xd5\x8a\x99\xf7\x08
.K
\x8e
v
\xfb\xf7
xw
\xbb\xdf\xa1\x92\xf1\xdd
|/";
\xa2\xba\x9f\xd5\xb1
#A
\xb6\xf6\xb3
o
\xc9\xc5
y
\\\xeb
O
\xe7\x85\x9a\xbc\xb6
f8
\x95
2
\xd5\xd7
"
%
\x89
>V,
\xf7\xa6
z
\xe2\x9f\xa3\xdf\x11\x11
"
\xd6
E)I
\xa9\x13
^
\xca\xf3
r
\xd0\x03
U
\x92
2
\xf2
6
\xec\xb6\xed\x8b\xc3
U
\x13\x9d\xc5\x17
0
\xa4\xfa
^
\x92\xac
DF
\x8a\x97\xd6\x19\xfe\xdd\xb8\xbd\x1a\x9a\x19\xa3\x80
ankR
\x8b\xe5\xd8
3]
\xa9\xc6\x08\x82
f
\xf6\xb9
"6l$
\xb8
j@
\xc0\x8a\xb0
l1..
\xba
k
\x83
ls
\x15\xbc\xf4\xc1\x13\xbe\xf8
E
\xb8\x9d\r\xa8\x9d
k
\x84\xd3
n
\xfa\xac
Q
\x07\xb1
%
y
\xaa
v
\xb4\x08\xe0
z
\x1b\x16\xf5\x04\xe9\xcc\xb9\x08
z
\x1e
n7.G
\xfc
]
\xc9\x14\xe1
B@
\xbb
!8`'
DATA
=
b
'BZh91AY&SY.
\xc8
N
\x18\x00\x01
>_
\x80\x00\x10
@
\x02\xff\xf0\x01\x07
n
\x00
?
\xe7\xff\xe0
0
\x01\x99\xaa\x00\xc0\x03
F
\x86\x8c
#&
\x83
F
\x9a\x03\x06\xa6\xd0\xa6\x93
M
\x0f
Q
\xa7\xa8\x06\x80
4hh
\x12
$
\x11\xa4
i4
\xf1
4S
\xd2
<Q
\xb5\x0f
H
\xd3\xd4\xdd\xd5\x87\xbb\xf8\x94\r\x8f\xaf
I
\x12\xe1\xc9\xf8
/E
\x00
pu
\x89\x12
]
\xc9\xbb
DL
\n
Q
\x0e\t
1
\x12\xdf\xa0\xc0\x97\xac
2O9
\x89\x13\x94\x0e\x1c
7
\x0e
d
\x95
I
\x0c\xaa
J
\xa4\x18
L
\x10\x05
#
\x9c\xaf\xba\xbc
/
\x97\x8a
#C
\xc8\xe1\x8c
W
\xf9\xe2\xd0\xd6
M
\xa7\x8b
Xa<e
\x84
t
\xcb
L
\xb3\xa7\xd9\xcd\xd1\xcb\x84
.
\xaf\xb3\xab\xab\xad
`n}
\xa0
lh
\t
E,
\x8e
Z
\x15\x17
VH>
\x88\xe5\xcd
9gd6
\x0b\n\xe9\x9b\xd5\x8a\x99\xf7\x08
.K
\x8e
v
\xfb\xf7
xw
\xbb\xdf\xa1\x92\xf1\xdd
|/";
\xa2\xba\x9f\xd5\xb1
#A
\xb6\xf6\xb3
o
\xc9\xc5
y
\\\xeb
O
\xe7\x85\x9a\xbc\xb6
f8
\x95
2
\xd5\xd7
"
%
\x89
>V,
\xf7\xa6
z
\xe2\x9f\xa3\xdf\x11\x11
"
\xd6
E)I
\xa9\x13
^
\xca\xf3
r
\xd0\x03
U
\x92
2
\xf2
6
\xec\xb6\xed\x8b\xc3
U
\x13\x9d\xc5\x17
0
\xa4\xfa
^
\x92\xac
DF
\x8a\x97\xd6\x19\xfe\xdd\xb8\xbd\x1a\x9a\x19\xa3\x80
ankR
\x8b\xe5\xd8
3]
\xa9\xc6\x08\x82
f
\xf6\xb9
"6l$
\xb8
j@
\xc0\x8a\xb0
l1..
\xba
k
\x83
ls
\x15\xbc\xf4\xc1\x13\xbe\xf8
E
\xb8\x9d\r\xa8\x9d
k
\x84\xd3
n
\xfa\xac
Q
\x07\xb1
%
y
\xaa
v
\xb4\x08\xe0
z
\x1b\x16\xf5\x04\xe9\xcc\xb9\x08
z
\x1e
n7.G
\xfc
]
\xc9\x14\xe1
B@
\xbb
!8`'
DATA_CRLF
=
'BZh91AY&SY
\xae
z
\xbb
N
\x00\x01
H
\xdf\x80\x00\x12
@
\x02\xff\xf0\x01\x07
n
\x00
?
\xe7\xff\xe0
@
\x01\xbc\xc6
`
\x86
*
\x8d
=M
\xa9\x9a\x86\xd0
L@
\x0f
I
\xa6
!
\xa1\x13\xc8\x88
jdi
\x8d
@
\x03
@
\x1a\x1a\x0c\x0c\x83
\x00\xc4
h2
\x19\x01\x82
D
\x84
e
\t\xe8\x99\x89\x19\x1a
h
\x00\r\x1a\x11\xaf\x9b\x0f
G
\xf5
(
\x1b\x1f
?
\t\x12\xcf\xb5\xfc\x95
E
\x00
ps
\x89\x12
^
\xa4\xdd\xa2
&
\x05
(
\x87\x04\x98\x89
u
\xe4
0
%
\xb6\x19\'\x8c\xc4\x89\xca\x07\x0e\x1b
!
\x91
UIFU
%
C
\x99
4!DI
\xd2\xfa\xf0\xf1
N8W
\xde\x13
A
\xf5\x9c
r
%
?
\x9f
3;I45A
\xd1\x8b
T
\xb1
<l
\xba\xcb
_
\xc0
0xY
\x17
r
\x17\x88\x08\x08
@
\xa0\r
y@
\x10\x04
$)`
\xf2\xce\x89
z
\xb0
s
\xec\x9b
.iW
\x9d\x81\xb5
-+t
\x9f\x1a\'\x97
dB
\xf5
x
\xb5\xbe
.[.
\xd7\x0e\x81\xe7\x08\x1c
N`
\x88\x10\xca\x87\xc3
!"
\x80\x92
R
\xa1
/
\xd1\xc0\xe6
mf
\xac\xbd\x99\xcc
a
\xb3\x87
80>
\xa4\xc7\x8d\x1a\\
"
\xad\xa1\xab
yBg
\x15\xb9
l
\x88\x88\x91
k"
\x94\xa4\xd4\x89\xae
*
\xa6\x0b\x10\x0c\xd6\xd4
m
\xe8
6
\xec\xb5
j
\x8a\x86
j
\'
;
\xca
.
\x01
I
\xf2\xaa
J
\xe8\x88\x8c
U+t3
\xfb\x0c\n\xa3
3
\x13
r2
\r\x16\xe0\xb3
(
\xbf\x1d\x83
r
\xe7
M
\xf0
D
\x13
65
\xd8\x88\xd3\xa4\x92\xcb
2
\x06\x04\\\xc1\xb0\xea
//
\xbe
k&
\xd8\xe6
+t
\xe5\xa1\x13\xad
a
\x16\xde
r5"w]
\xa2
i
\xb7
[
\x97
R
\xe2
IT
\xcd
;Z
\x04
dk4
\xad\x8a\t\xd3\x81
z
\x10\xf1
:^`
\xab\x1f\xc5\xdc\x91
N
\x14
$+
\x9e\xae\xd3\x80
'
DATA_CRLF
=
b
'BZh91AY&SY
\xae
z
\xbb
N
\x00\x01
H
\xdf\x80\x00\x12
@
\x02\xff\xf0\x01\x07
n
\x00
?
\xe7\xff\xe0
@
\x01\xbc\xc6
`
\x86
*
\x8d
=M
\xa9\x9a\x86\xd0
L@
\x0f
I
\xa6
!
\xa1\x13\xc8\x88
jdi
\x8d
@
\x03
@
\x1a\x1a\x0c\x0c\x83
\x00\xc4
h2
\x19\x01\x82
D
\x84
e
\t\xe8\x99\x89\x19\x1a
h
\x00\r\x1a\x11\xaf\x9b\x0f
G
\xf5
(
\x1b\x1f
?
\t\x12\xcf\xb5\xfc\x95
E
\x00
ps
\x89\x12
^
\xa4\xdd\xa2
&
\x05
(
\x87\x04\x98\x89
u
\xe4
0
%
\xb6\x19\'\x8c\xc4\x89\xca\x07\x0e\x1b
!
\x91
UIFU
%
C
\x99
4!DI
\xd2\xfa\xf0\xf1
N8W
\xde\x13
A
\xf5\x9c
r
%
?
\x9f
3;I45A
\xd1\x8b
T
\xb1
<l
\xba\xcb
_
\xc0
0xY
\x17
r
\x17\x88\x08\x08
@
\xa0\r
y@
\x10\x04
$)`
\xf2\xce\x89
z
\xb0
s
\xec\x9b
.iW
\x9d\x81\xb5
-+t
\x9f\x1a\'\x97
dB
\xf5
x
\xb5\xbe
.[.
\xd7\x0e\x81\xe7\x08\x1c
N`
\x88\x10\xca\x87\xc3
!"
\x80\x92
R
\xa1
/
\xd1\xc0\xe6
mf
\xac\xbd\x99\xcc
a
\xb3\x87
80>
\xa4\xc7\x8d\x1a\\
"
\xad\xa1\xab
yBg
\x15\xb9
l
\x88\x88\x91
k"
\x94\xa4\xd4\x89\xae
*
\xa6\x0b\x10\x0c\xd6\xd4
m
\xe8
6
\xec\xb5
j
\x8a\x86
j
\'
;
\xca
.
\x01
I
\xf2\xaa
J
\xe8\x88\x8c
U+t3
\xfb\x0c\n\xa3
3
\x13
r2
\r\x16\xe0\xb3
(
\xbf\x1d\x83
r
\xe7
M
\xf0
D
\x13
65
\xd8\x88\xd3\xa4\x92\xcb
2
\x06\x04\\\xc1\xb0\xea
//
\xbe
k&
\xd8\xe6
+t
\xe5\xa1\x13\xad
a
\x16\xde
r5"w]
\xa2
i
\xb7
[
\x97
R
\xe2
IT
\xcd
;Z
\x04
dk4
\xad\x8a\t\xd3\x81
z
\x10\xf1
:^`
\xab\x1f\xc5\xdc\x91
N
\x14
$+
\x9e\xae\xd3\x80
'
if
has_cmdline_bunzip2
:
if
has_cmdline_bunzip2
:
def
decompress
(
self
,
data
):
def
decompress
(
self
,
data
):
...
@@ -69,7 +69,7 @@ class BZ2FileTest(BaseTest):
...
@@ -69,7 +69,7 @@ class BZ2FileTest(BaseTest):
# "Test BZ2File.read() in chunks of 10 bytes"
# "Test BZ2File.read() in chunks of 10 bytes"
self
.
createTempFile
()
self
.
createTempFile
()
bz2f
=
BZ2File
(
self
.
filename
)
bz2f
=
BZ2File
(
self
.
filename
)
text
=
''
text
=
b
''
while
1
:
while
1
:
str
=
bz2f
.
read
(
10
)
str
=
bz2f
.
read
(
10
)
if
not
str
:
if
not
str
:
...
@@ -117,7 +117,7 @@ class BZ2FileTest(BaseTest):
...
@@ -117,7 +117,7 @@ class BZ2FileTest(BaseTest):
self
.
createTempFile
()
self
.
createTempFile
()
bz2f
=
BZ2File
(
self
.
filename
,
"rU"
)
bz2f
=
BZ2File
(
self
.
filename
,
"rU"
)
self
.
assertEqual
(
bz2f
.
read
(),
self
.
TEXT
)
self
.
assertEqual
(
bz2f
.
read
(),
self
.
TEXT
)
self
.
assertEqual
(
bz2f
.
newlines
,
"
\n
"
)
self
.
assertEqual
(
bz2f
.
newlines
,
b
"
\n
"
)
bz2f
.
close
()
bz2f
.
close
()
def
testUniversalNewlinesCRLF
(
self
):
def
testUniversalNewlinesCRLF
(
self
):
...
@@ -125,7 +125,7 @@ class BZ2FileTest(BaseTest):
...
@@ -125,7 +125,7 @@ class BZ2FileTest(BaseTest):
self
.
createTempFile
(
crlf
=
1
)
self
.
createTempFile
(
crlf
=
1
)
bz2f
=
BZ2File
(
self
.
filename
,
"rU"
)
bz2f
=
BZ2File
(
self
.
filename
,
"rU"
)
self
.
assertEqual
(
bz2f
.
read
(),
self
.
TEXT
)
self
.
assertEqual
(
bz2f
.
read
(),
self
.
TEXT
)
self
.
assertEqual
(
bz2f
.
newlines
,
"
\r\n
"
)
self
.
assertEqual
(
bz2f
.
newlines
,
b
"
\r\n
"
)
bz2f
.
close
()
bz2f
.
close
()
def
testWrite
(
self
):
def
testWrite
(
self
):
...
@@ -207,7 +207,7 @@ class BZ2FileTest(BaseTest):
...
@@ -207,7 +207,7 @@ class BZ2FileTest(BaseTest):
bz2f
=
BZ2File
(
self
.
filename
)
bz2f
=
BZ2File
(
self
.
filename
)
bz2f
.
seek
(
150000
)
bz2f
.
seek
(
150000
)
self
.
assertEqual
(
bz2f
.
tell
(),
len
(
self
.
TEXT
))
self
.
assertEqual
(
bz2f
.
tell
(),
len
(
self
.
TEXT
))
self
.
assertEqual
(
bz2f
.
read
(),
""
)
self
.
assertEqual
(
bz2f
.
read
(),
b
""
)
bz2f
.
close
()
bz2f
.
close
()
def
testSeekPostEndTwice
(
self
):
def
testSeekPostEndTwice
(
self
):
...
@@ -217,7 +217,7 @@ class BZ2FileTest(BaseTest):
...
@@ -217,7 +217,7 @@ class BZ2FileTest(BaseTest):
bz2f
.
seek
(
150000
)
bz2f
.
seek
(
150000
)
bz2f
.
seek
(
150000
)
bz2f
.
seek
(
150000
)
self
.
assertEqual
(
bz2f
.
tell
(),
len
(
self
.
TEXT
))
self
.
assertEqual
(
bz2f
.
tell
(),
len
(
self
.
TEXT
))
self
.
assertEqual
(
bz2f
.
read
(),
""
)
self
.
assertEqual
(
bz2f
.
read
(),
b
""
)
bz2f
.
close
()
bz2f
.
close
()
def
testSeekPreStart
(
self
):
def
testSeekPreStart
(
self
):
...
@@ -252,18 +252,18 @@ class BZ2FileTest(BaseTest):
...
@@ -252,18 +252,18 @@ class BZ2FileTest(BaseTest):
def
testBug1191043
(
self
):
def
testBug1191043
(
self
):
# readlines() for files containing no newline
# readlines() for files containing no newline
data
=
'BZh91AY&SY
\xd9
b
\x89
]
\x00\x00\x00\x03\x80\x04\x00\x02\x00\x0c\x00
\x00
!
\x9a
h3M
\x13
<]
\xc9\x14\xe1
BCe
\x8a
%
t'
data
=
b
'BZh91AY&SY
\xd9
b
\x89
]
\x00\x00\x00\x03\x80\x04\x00\x02\x00\x0c\x00
\x00
!
\x9a
h3M
\x13
<]
\xc9\x14\xe1
BCe
\x8a
%
t'
f
=
open
(
self
.
filename
,
"wb"
)
f
=
open
(
self
.
filename
,
"wb"
)
f
.
write
(
data
)
f
.
write
(
data
)
f
.
close
()
f
.
close
()
bz2f
=
BZ2File
(
self
.
filename
)
bz2f
=
BZ2File
(
self
.
filename
)
lines
=
bz2f
.
readlines
()
lines
=
bz2f
.
readlines
()
bz2f
.
close
()
bz2f
.
close
()
self
.
assertEqual
(
lines
,
[
'Test'
])
self
.
assertEqual
(
lines
,
[
b
'Test'
])
bz2f
=
BZ2File
(
self
.
filename
)
bz2f
=
BZ2File
(
self
.
filename
)
xlines
=
list
(
bz2f
.
readlines
())
xlines
=
list
(
bz2f
.
readlines
())
bz2f
.
close
()
bz2f
.
close
()
self
.
assertEqual
(
xlines
,
[
'Test'
])
self
.
assertEqual
(
xlines
,
[
b
'Test'
])
class
BZ2CompressorTest
(
BaseTest
):
class
BZ2CompressorTest
(
BaseTest
):
...
@@ -279,7 +279,7 @@ class BZ2CompressorTest(BaseTest):
...
@@ -279,7 +279,7 @@ class BZ2CompressorTest(BaseTest):
# "Test BZ2Compressor.compress()/flush() with chunks of 10 bytes"
# "Test BZ2Compressor.compress()/flush() with chunks of 10 bytes"
bz2c
=
BZ2Compressor
()
bz2c
=
BZ2Compressor
()
n
=
0
n
=
0
data
=
''
data
=
b
''
while
1
:
while
1
:
str
=
self
.
TEXT
[
n
*
10
:(
n
+
1
)
*
10
]
str
=
self
.
TEXT
[
n
*
10
:(
n
+
1
)
*
10
]
if
not
str
:
if
not
str
:
...
@@ -303,7 +303,7 @@ class BZ2DecompressorTest(BaseTest):
...
@@ -303,7 +303,7 @@ class BZ2DecompressorTest(BaseTest):
def
testDecompressChunks10
(
self
):
def
testDecompressChunks10
(
self
):
# "Test BZ2Decompressor.decompress() with chunks of 10 bytes"
# "Test BZ2Decompressor.decompress() with chunks of 10 bytes"
bz2d
=
BZ2Decompressor
()
bz2d
=
BZ2Decompressor
()
text
=
''
text
=
b
''
n
=
0
n
=
0
while
1
:
while
1
:
str
=
self
.
DATA
[
n
*
10
:(
n
+
1
)
*
10
]
str
=
self
.
DATA
[
n
*
10
:(
n
+
1
)
*
10
]
...
@@ -316,7 +316,7 @@ class BZ2DecompressorTest(BaseTest):
...
@@ -316,7 +316,7 @@ class BZ2DecompressorTest(BaseTest):
def
testDecompressUnusedData
(
self
):
def
testDecompressUnusedData
(
self
):
# "Test BZ2Decompressor.decompress() with unused data"
# "Test BZ2Decompressor.decompress() with unused data"
bz2d
=
BZ2Decompressor
()
bz2d
=
BZ2Decompressor
()
unused_data
=
"this is unused data"
unused_data
=
b
"this is unused data"
text
=
bz2d
.
decompress
(
self
.
DATA
+
unused_data
)
text
=
bz2d
.
decompress
(
self
.
DATA
+
unused_data
)
self
.
assertEqual
(
text
,
self
.
TEXT
)
self
.
assertEqual
(
text
,
self
.
TEXT
)
self
.
assertEqual
(
bz2d
.
unused_data
,
unused_data
)
self
.
assertEqual
(
bz2d
.
unused_data
,
unused_data
)
...
@@ -343,8 +343,8 @@ class FuncTest(BaseTest):
...
@@ -343,8 +343,8 @@ class FuncTest(BaseTest):
def
testDecompressEmpty
(
self
):
def
testDecompressEmpty
(
self
):
# "Test decompress() function with empty string"
# "Test decompress() function with empty string"
text
=
bz2
.
decompress
(
""
)
text
=
bz2
.
decompress
(
b
""
)
self
.
assertEqual
(
text
,
""
)
self
.
assertEqual
(
text
,
b
""
)
def
testDecompressIncomplete
(
self
):
def
testDecompressIncomplete
(
self
):
# "Test decompress() function with incomplete data"
# "Test decompress() function with incomplete data"
...
...
Modules/bz2module.c
Dosyayı görüntüle @
522a6c66
...
@@ -34,7 +34,7 @@ typedef fpos_t Py_off_t;
...
@@ -34,7 +34,7 @@ typedef fpos_t Py_off_t;
#error "Large file support, but neither off_t nor fpos_t is large enough."
#error "Large file support, but neither off_t nor fpos_t is large enough."
#endif
#endif
#define BUF(v) Py
String_AS_STRING((PyStringObject *)
v)
#define BUF(v) Py
Bytes_AS_STRING(
v)
#define MODE_CLOSED 0
#define MODE_CLOSED 0
#define MODE_READ 1
#define MODE_READ 1
...
@@ -238,7 +238,7 @@ Util_GetLine(BZ2FileObject *f, int n)
...
@@ -238,7 +238,7 @@ Util_GetLine(BZ2FileObject *f, int n)
int
univ_newline
=
f
->
f_univ_newline
;
int
univ_newline
=
f
->
f_univ_newline
;
total_v_size
=
n
>
0
?
n
:
100
;
total_v_size
=
n
>
0
?
n
:
100
;
v
=
Py
String
_FromStringAndSize
((
char
*
)
NULL
,
total_v_size
);
v
=
Py
Bytes
_FromStringAndSize
((
char
*
)
NULL
,
total_v_size
);
if
(
v
==
NULL
)
if
(
v
==
NULL
)
return
NULL
;
return
NULL
;
...
@@ -311,15 +311,21 @@ Util_GetLine(BZ2FileObject *f, int n)
...
@@ -311,15 +311,21 @@ Util_GetLine(BZ2FileObject *f, int n)
Py_DECREF
(
v
);
Py_DECREF
(
v
);
return
NULL
;
return
NULL
;
}
}
if
(
_PyString_Resize
(
&
v
,
total_v_size
)
<
0
)
if
(
PyBytes_Resize
(
v
,
total_v_size
)
<
0
)
{
Py_DECREF
(
v
);
return
NULL
;
return
NULL
;
}
buf
=
BUF
(
v
)
+
used_v_size
;
buf
=
BUF
(
v
)
+
used_v_size
;
end
=
BUF
(
v
)
+
total_v_size
;
end
=
BUF
(
v
)
+
total_v_size
;
}
}
used_v_size
=
buf
-
BUF
(
v
);
used_v_size
=
buf
-
BUF
(
v
);
if
(
used_v_size
!=
total_v_size
)
if
(
used_v_size
!=
total_v_size
)
{
_PyString_Resize
(
&
v
,
used_v_size
);
if
(
PyBytes_Resize
(
v
,
used_v_size
)
<
0
)
{
Py_DECREF
(
v
);
v
=
NULL
;
}
}
return
v
;
return
v
;
}
}
...
@@ -442,10 +448,10 @@ Util_ReadAhead(BZ2FileObject *f, int bufsize)
...
@@ -442,10 +448,10 @@ Util_ReadAhead(BZ2FileObject *f, int bufsize)
/* This is a hacked version of Python's
/* This is a hacked version of Python's
* fileobject.c:readahead_get_line_skip(). */
* fileobject.c:readahead_get_line_skip(). */
static
Py
String
Object
*
static
Py
Bytes
Object
*
Util_ReadAheadGetLineSkip
(
BZ2FileObject
*
f
,
int
skip
,
int
bufsize
)
Util_ReadAheadGetLineSkip
(
BZ2FileObject
*
f
,
int
skip
,
int
bufsize
)
{
{
Py
String
Object
*
s
;
Py
Bytes
Object
*
s
;
char
*
bufptr
;
char
*
bufptr
;
char
*
buf
;
char
*
buf
;
int
len
;
int
len
;
...
@@ -456,17 +462,17 @@ Util_ReadAheadGetLineSkip(BZ2FileObject *f, int skip, int bufsize)
...
@@ -456,17 +462,17 @@ Util_ReadAheadGetLineSkip(BZ2FileObject *f, int skip, int bufsize)
len
=
f
->
f_bufend
-
f
->
f_bufptr
;
len
=
f
->
f_bufend
-
f
->
f_bufptr
;
if
(
len
==
0
)
if
(
len
==
0
)
return
(
Py
String
Object
*
)
return
(
Py
Bytes
Object
*
)
Py
String
_FromStringAndSize
(
NULL
,
skip
);
Py
Bytes
_FromStringAndSize
(
NULL
,
skip
);
bufptr
=
memchr
(
f
->
f_bufptr
,
'\n'
,
len
);
bufptr
=
memchr
(
f
->
f_bufptr
,
'\n'
,
len
);
if
(
bufptr
!=
NULL
)
{
if
(
bufptr
!=
NULL
)
{
bufptr
++
;
/* Count the '\n' */
bufptr
++
;
/* Count the '\n' */
len
=
bufptr
-
f
->
f_bufptr
;
len
=
bufptr
-
f
->
f_bufptr
;
s
=
(
Py
String
Object
*
)
s
=
(
Py
Bytes
Object
*
)
Py
String
_FromStringAndSize
(
NULL
,
skip
+
len
);
Py
Bytes
_FromStringAndSize
(
NULL
,
skip
+
len
);
if
(
s
==
NULL
)
if
(
s
==
NULL
)
return
NULL
;
return
NULL
;
memcpy
(
Py
String
_AS_STRING
(
s
)
+
skip
,
f
->
f_bufptr
,
len
);
memcpy
(
Py
Bytes
_AS_STRING
(
s
)
+
skip
,
f
->
f_bufptr
,
len
);
f
->
f_bufptr
=
bufptr
;
f
->
f_bufptr
=
bufptr
;
if
(
bufptr
==
f
->
f_bufend
)
if
(
bufptr
==
f
->
f_bufend
)
Util_DropReadAhead
(
f
);
Util_DropReadAhead
(
f
);
...
@@ -480,7 +486,7 @@ Util_ReadAheadGetLineSkip(BZ2FileObject *f, int skip, int bufsize)
...
@@ -480,7 +486,7 @@ Util_ReadAheadGetLineSkip(BZ2FileObject *f, int skip, int bufsize)
PyMem_Free
(
buf
);
PyMem_Free
(
buf
);
return
NULL
;
return
NULL
;
}
}
memcpy
(
Py
String
_AS_STRING
(
s
)
+
skip
,
bufptr
,
len
);
memcpy
(
Py
Bytes
_AS_STRING
(
s
)
+
skip
,
bufptr
,
len
);
PyMem_Free
(
buf
);
PyMem_Free
(
buf
);
}
}
return
s
;
return
s
;
...
@@ -513,7 +519,7 @@ BZ2File_read(BZ2FileObject *self, PyObject *args)
...
@@ -513,7 +519,7 @@ BZ2File_read(BZ2FileObject *self, PyObject *args)
case
MODE_READ
:
case
MODE_READ
:
break
;
break
;
case
MODE_READ_EOF
:
case
MODE_READ_EOF
:
ret
=
Py
String_FromString
(
""
);
ret
=
Py
Bytes_FromStringAndSize
(
""
,
0
);
goto
cleanup
;
goto
cleanup
;
case
MODE_CLOSED
:
case
MODE_CLOSED
:
PyErr_SetString
(
PyExc_ValueError
,
PyErr_SetString
(
PyExc_ValueError
,
...
@@ -535,7 +541,7 @@ BZ2File_read(BZ2FileObject *self, PyObject *args)
...
@@ -535,7 +541,7 @@ BZ2File_read(BZ2FileObject *self, PyObject *args)
"more than a Python string can hold"
);
"more than a Python string can hold"
);
goto
cleanup
;
goto
cleanup
;
}
}
ret
=
Py
String
_FromStringAndSize
((
char
*
)
NULL
,
buffersize
);
ret
=
Py
Bytes
_FromStringAndSize
((
char
*
)
NULL
,
buffersize
);
if
(
ret
==
NULL
)
if
(
ret
==
NULL
)
goto
cleanup
;
goto
cleanup
;
bytesread
=
0
;
bytesread
=
0
;
...
@@ -561,14 +567,21 @@ BZ2File_read(BZ2FileObject *self, PyObject *args)
...
@@ -561,14 +567,21 @@ BZ2File_read(BZ2FileObject *self, PyObject *args)
}
}
if
(
bytesrequested
<
0
)
{
if
(
bytesrequested
<
0
)
{
buffersize
=
Util_NewBufferSize
(
buffersize
);
buffersize
=
Util_NewBufferSize
(
buffersize
);
if
(
_PyString_Resize
(
&
ret
,
buffersize
)
<
0
)
if
(
PyBytes_Resize
(
ret
,
buffersize
)
<
0
)
{
Py_DECREF
(
ret
);
ret
=
NULL
;
goto
cleanup
;
goto
cleanup
;
}
}
else
{
}
else
{
break
;
break
;
}
}
}
}
if
(
bytesread
!=
buffersize
)
if
(
bytesread
!=
buffersize
)
{
_PyString_Resize
(
&
ret
,
bytesread
);
if
(
PyBytes_Resize
(
ret
,
bytesread
)
<
0
)
{
Py_DECREF
(
ret
);
ret
=
NULL
;
}
}
cleanup:
cleanup:
RELEASE_LOCK
(
self
);
RELEASE_LOCK
(
self
);
...
@@ -598,7 +611,7 @@ BZ2File_readline(BZ2FileObject *self, PyObject *args)
...
@@ -598,7 +611,7 @@ BZ2File_readline(BZ2FileObject *self, PyObject *args)
case
MODE_READ
:
case
MODE_READ
:
break
;
break
;
case
MODE_READ_EOF
:
case
MODE_READ_EOF
:
ret
=
Py
String_FromString
(
""
);
ret
=
Py
Bytes_FromStringAndSize
(
""
,
0
);
goto
cleanup
;
goto
cleanup
;
case
MODE_CLOSED
:
case
MODE_CLOSED
:
PyErr_SetString
(
PyExc_ValueError
,
PyErr_SetString
(
PyExc_ValueError
,
...
@@ -611,7 +624,7 @@ BZ2File_readline(BZ2FileObject *self, PyObject *args)
...
@@ -611,7 +624,7 @@ BZ2File_readline(BZ2FileObject *self, PyObject *args)
}
}
if
(
sizehint
==
0
)
if
(
sizehint
==
0
)
ret
=
Py
String_FromString
(
""
);
ret
=
Py
Bytes_FromStringAndSize
(
""
,
0
);
else
else
ret
=
Util_GetLine
(
self
,
(
sizehint
<
0
)
?
0
:
sizehint
);
ret
=
Util_GetLine
(
self
,
(
sizehint
<
0
)
?
0
:
sizehint
);
...
@@ -705,17 +718,21 @@ BZ2File_readlines(BZ2FileObject *self, PyObject *args)
...
@@ -705,17 +718,21 @@ BZ2File_readlines(BZ2FileObject *self, PyObject *args)
}
}
if
(
big_buffer
==
NULL
)
{
if
(
big_buffer
==
NULL
)
{
/* Create the big buffer */
/* Create the big buffer */
big_buffer
=
Py
String
_FromStringAndSize
(
big_buffer
=
Py
Bytes
_FromStringAndSize
(
NULL
,
buffersize
);
NULL
,
buffersize
);
if
(
big_buffer
==
NULL
)
if
(
big_buffer
==
NULL
)
goto
error
;
goto
error
;
buffer
=
Py
String
_AS_STRING
(
big_buffer
);
buffer
=
Py
Bytes
_AS_STRING
(
big_buffer
);
memcpy
(
buffer
,
small_buffer
,
nfilled
);
memcpy
(
buffer
,
small_buffer
,
nfilled
);
}
}
else
{
else
{
/* Grow the big buffer */
/* Grow the big buffer */
_PyString_Resize
(
&
big_buffer
,
buffersize
);
if
(
PyBytes_Resize
(
big_buffer
,
buffersize
)
<
0
){
buffer
=
PyString_AS_STRING
(
big_buffer
);
Py_DECREF
(
big_buffer
);
big_buffer
=
NULL
;
goto
error
;
}
buffer
=
PyBytes_AS_STRING
(
big_buffer
);
}
}
continue
;
continue
;
}
}
...
@@ -724,7 +741,7 @@ BZ2File_readlines(BZ2FileObject *self, PyObject *args)
...
@@ -724,7 +741,7 @@ BZ2File_readlines(BZ2FileObject *self, PyObject *args)
while
(
p
!=
NULL
)
{
while
(
p
!=
NULL
)
{
/* Process complete lines */
/* Process complete lines */
p
++
;
p
++
;
line
=
Py
String
_FromStringAndSize
(
q
,
p
-
q
);
line
=
Py
Bytes
_FromStringAndSize
(
q
,
p
-
q
);
if
(
line
==
NULL
)
if
(
line
==
NULL
)
goto
error
;
goto
error
;
err
=
PyList_Append
(
list
,
line
);
err
=
PyList_Append
(
list
,
line
);
...
@@ -747,18 +764,21 @@ BZ2File_readlines(BZ2FileObject *self, PyObject *args)
...
@@ -747,18 +764,21 @@ BZ2File_readlines(BZ2FileObject *self, PyObject *args)
}
}
if
(
nfilled
!=
0
)
{
if
(
nfilled
!=
0
)
{
/* Partial last line */
/* Partial last line */
line
=
Py
String
_FromStringAndSize
(
buffer
,
nfilled
);
line
=
Py
Bytes
_FromStringAndSize
(
buffer
,
nfilled
);
if
(
line
==
NULL
)
if
(
line
==
NULL
)
goto
error
;
goto
error
;
if
(
sizehint
>
0
)
{
if
(
sizehint
>
0
)
{
/* Need to complete the last line */
/* Need to complete the last line */
PyObject
*
rest
=
Util_GetLine
(
self
,
0
);
PyObject
*
rest
=
Util_GetLine
(
self
,
0
);
PyObject
*
new
;
if
(
rest
==
NULL
)
{
if
(
rest
==
NULL
)
{
Py_DECREF
(
line
);
Py_DECREF
(
line
);
goto
error
;
goto
error
;
}
}
PyString_Concat
(
&
line
,
rest
);
new
=
PyBytes_Concat
(
line
,
rest
);
Py_DECREF
(
line
);
Py_DECREF
(
rest
);
Py_DECREF
(
rest
);
line
=
new
;
if
(
line
==
NULL
)
if
(
line
==
NULL
)
goto
error
;
goto
error
;
}
}
...
@@ -903,14 +923,14 @@ BZ2File_writelines(BZ2FileObject *self, PyObject *seq)
...
@@ -903,14 +923,14 @@ BZ2File_writelines(BZ2FileObject *self, PyObject *seq)
if
(
j
==
0
)
if
(
j
==
0
)
break
;
break
;
/* Check that all entries are indeed strings. If not,
/* Check that all entries are indeed
byte
strings. If not,
apply the same rules as for file.write() and
apply the same rules as for file.write() and
convert the rets to strings. This is slow, but
convert the rets to strings. This is slow, but
seems to be the only way since all conversion APIs
seems to be the only way since all conversion APIs
could potentially execute Python code. */
could potentially execute Python code. */
for
(
i
=
0
;
i
<
j
;
i
++
)
{
for
(
i
=
0
;
i
<
j
;
i
++
)
{
PyObject
*
v
=
PyList_GET_ITEM
(
list
,
i
);
PyObject
*
v
=
PyList_GET_ITEM
(
list
,
i
);
if
(
!
Py
String
_Check
(
v
))
{
if
(
!
Py
Bytes
_Check
(
v
))
{
const
char
*
buffer
;
const
char
*
buffer
;
Py_ssize_t
len
;
Py_ssize_t
len
;
if
(
PyObject_AsCharBuffer
(
v
,
&
buffer
,
&
len
))
{
if
(
PyObject_AsCharBuffer
(
v
,
&
buffer
,
&
len
))
{
...
@@ -918,10 +938,10 @@ BZ2File_writelines(BZ2FileObject *self, PyObject *seq)
...
@@ -918,10 +938,10 @@ BZ2File_writelines(BZ2FileObject *self, PyObject *seq)
"writelines() "
"writelines() "
"argument must be "
"argument must be "
"a sequence of "
"a sequence of "
"
string
s"
);
"
bytes object
s"
);
goto
error
;
goto
error
;
}
}
line
=
Py
String
_FromStringAndSize
(
buffer
,
line
=
Py
Bytes
_FromStringAndSize
(
buffer
,
len
);
len
);
if
(
line
==
NULL
)
if
(
line
==
NULL
)
goto
error
;
goto
error
;
...
@@ -935,9 +955,9 @@ BZ2File_writelines(BZ2FileObject *self, PyObject *seq)
...
@@ -935,9 +955,9 @@ BZ2File_writelines(BZ2FileObject *self, PyObject *seq)
Py_BEGIN_ALLOW_THREADS
Py_BEGIN_ALLOW_THREADS
for
(
i
=
0
;
i
<
j
;
i
++
)
{
for
(
i
=
0
;
i
<
j
;
i
++
)
{
line
=
PyList_GET_ITEM
(
list
,
i
);
line
=
PyList_GET_ITEM
(
list
,
i
);
len
=
Py
String
_GET_SIZE
(
line
);
len
=
Py
Bytes
_GET_SIZE
(
line
);
BZ2_bzWrite
(
&
bzerror
,
self
->
fp
,
BZ2_bzWrite
(
&
bzerror
,
self
->
fp
,
Py
String
_AS_STRING
(
line
),
len
);
Py
Bytes
_AS_STRING
(
line
),
len
);
if
(
bzerror
!=
BZ_OK
)
{
if
(
bzerror
!=
BZ_OK
)
{
Py_BLOCK_THREADS
Py_BLOCK_THREADS
Util_CatchBZ2Error
(
bzerror
);
Util_CatchBZ2Error
(
bzerror
);
...
@@ -1206,13 +1226,13 @@ BZ2File_get_newlines(BZ2FileObject *self, void *closure)
...
@@ -1206,13 +1226,13 @@ BZ2File_get_newlines(BZ2FileObject *self, void *closure)
Py_INCREF
(
Py_None
);
Py_INCREF
(
Py_None
);
return
Py_None
;
return
Py_None
;
case
NEWLINE_CR
:
case
NEWLINE_CR
:
return
Py
String_FromString
(
"
\r
"
);
return
Py
Bytes_FromStringAndSize
(
"
\r
"
,
1
);
case
NEWLINE_LF
:
case
NEWLINE_LF
:
return
Py
String_FromString
(
"
\n
"
);
return
Py
Bytes_FromStringAndSize
(
"
\n
"
,
1
);
case
NEWLINE_CR
|
NEWLINE_LF
:
case
NEWLINE_CR
|
NEWLINE_LF
:
return
Py_BuildValue
(
"(ss)"
,
"
\r
"
,
"
\n
"
);
return
Py_BuildValue
(
"(ss)"
,
"
\r
"
,
"
\n
"
);
case
NEWLINE_CRLF
:
case
NEWLINE_CRLF
:
return
Py
String_FromString
(
"
\r\n
"
);
return
Py
Bytes_FromStringAndSize
(
"
\r\n
"
,
2
);
case
NEWLINE_CR
|
NEWLINE_CRLF
:
case
NEWLINE_CR
|
NEWLINE_CRLF
:
return
Py_BuildValue
(
"(ss)"
,
"
\r
"
,
"
\r\n
"
);
return
Py_BuildValue
(
"(ss)"
,
"
\r
"
,
"
\r\n
"
);
case
NEWLINE_LF
|
NEWLINE_CRLF
:
case
NEWLINE_LF
|
NEWLINE_CRLF
:
...
@@ -1413,7 +1433,7 @@ BZ2File_getiter(BZ2FileObject *self)
...
@@ -1413,7 +1433,7 @@ BZ2File_getiter(BZ2FileObject *self)
static
PyObject
*
static
PyObject
*
BZ2File_iternext
(
BZ2FileObject
*
self
)
BZ2File_iternext
(
BZ2FileObject
*
self
)
{
{
Py
String
Object
*
ret
;
Py
Bytes
Object
*
ret
;
ACQUIRE_LOCK
(
self
);
ACQUIRE_LOCK
(
self
);
if
(
self
->
mode
==
MODE_CLOSED
)
{
if
(
self
->
mode
==
MODE_CLOSED
)
{
PyErr_SetString
(
PyExc_ValueError
,
PyErr_SetString
(
PyExc_ValueError
,
...
@@ -1422,7 +1442,7 @@ BZ2File_iternext(BZ2FileObject *self)
...
@@ -1422,7 +1442,7 @@ BZ2File_iternext(BZ2FileObject *self)
}
}
ret
=
Util_ReadAheadGetLineSkip
(
self
,
0
,
READAHEAD_BUFSIZE
);
ret
=
Util_ReadAheadGetLineSkip
(
self
,
0
,
READAHEAD_BUFSIZE
);
RELEASE_LOCK
(
self
);
RELEASE_LOCK
(
self
);
if
(
ret
==
NULL
||
Py
String
_GET_SIZE
(
ret
)
==
0
)
{
if
(
ret
==
NULL
||
Py
Bytes
_GET_SIZE
(
ret
)
==
0
)
{
Py_XDECREF
(
ret
);
Py_XDECREF
(
ret
);
return
NULL
;
return
NULL
;
}
}
...
@@ -1525,7 +1545,7 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
...
@@ -1525,7 +1545,7 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
return
NULL
;
return
NULL
;
if
(
datasize
==
0
)
if
(
datasize
==
0
)
return
Py
String_FromString
(
""
);
return
Py
Bytes_FromStringAndSize
(
""
,
0
);
ACQUIRE_LOCK
(
self
);
ACQUIRE_LOCK
(
self
);
if
(
!
self
->
running
)
{
if
(
!
self
->
running
)
{
...
@@ -1534,7 +1554,7 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
...
@@ -1534,7 +1554,7 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
goto
error
;
goto
error
;
}
}
ret
=
Py
String
_FromStringAndSize
(
NULL
,
bufsize
);
ret
=
Py
Bytes
_FromStringAndSize
(
NULL
,
bufsize
);
if
(
!
ret
)
if
(
!
ret
)
goto
error
;
goto
error
;
...
@@ -1557,7 +1577,7 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
...
@@ -1557,7 +1577,7 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
break
;
/* no more input data */
break
;
/* no more input data */
if
(
bzs
->
avail_out
==
0
)
{
if
(
bzs
->
avail_out
==
0
)
{
bufsize
=
Util_NewBufferSize
(
bufsize
);
bufsize
=
Util_NewBufferSize
(
bufsize
);
if
(
_PyString_Resize
(
&
ret
,
bufsize
)
<
0
)
{
if
(
PyBytes_Resize
(
ret
,
bufsize
)
<
0
)
{
BZ2_bzCompressEnd
(
bzs
);
BZ2_bzCompressEnd
(
bzs
);
goto
error
;
goto
error
;
}
}
...
@@ -1567,7 +1587,9 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
...
@@ -1567,7 +1587,9 @@ BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
}
}
}
}
_PyString_Resize
(
&
ret
,
(
Py_ssize_t
)(
BZS_TOTAL_OUT
(
bzs
)
-
totalout
));
if
(
PyBytes_Resize
(
ret
,
(
Py_ssize_t
)(
BZS_TOTAL_OUT
(
bzs
)
-
totalout
))
<
0
)
goto
error
;
RELEASE_LOCK
(
self
);
RELEASE_LOCK
(
self
);
return
ret
;
return
ret
;
...
@@ -1602,7 +1624,7 @@ BZ2Comp_flush(BZ2CompObject *self)
...
@@ -1602,7 +1624,7 @@ BZ2Comp_flush(BZ2CompObject *self)
}
}
self
->
running
=
0
;
self
->
running
=
0
;
ret
=
Py
String
_FromStringAndSize
(
NULL
,
bufsize
);
ret
=
Py
Bytes
_FromStringAndSize
(
NULL
,
bufsize
);
if
(
!
ret
)
if
(
!
ret
)
goto
error
;
goto
error
;
...
@@ -1623,7 +1645,7 @@ BZ2Comp_flush(BZ2CompObject *self)
...
@@ -1623,7 +1645,7 @@ BZ2Comp_flush(BZ2CompObject *self)
}
}
if
(
bzs
->
avail_out
==
0
)
{
if
(
bzs
->
avail_out
==
0
)
{
bufsize
=
Util_NewBufferSize
(
bufsize
);
bufsize
=
Util_NewBufferSize
(
bufsize
);
if
(
_PyString_Resize
(
&
ret
,
bufsize
)
<
0
)
if
(
PyBytes_Resize
(
ret
,
bufsize
)
<
0
)
goto
error
;
goto
error
;
bzs
->
next_out
=
BUF
(
ret
);
bzs
->
next_out
=
BUF
(
ret
);
bzs
->
next_out
=
BUF
(
ret
)
+
(
BZS_TOTAL_OUT
(
bzs
)
bzs
->
next_out
=
BUF
(
ret
)
+
(
BZS_TOTAL_OUT
(
bzs
)
...
@@ -1632,8 +1654,11 @@ BZ2Comp_flush(BZ2CompObject *self)
...
@@ -1632,8 +1654,11 @@ BZ2Comp_flush(BZ2CompObject *self)
}
}
}
}
if
(
bzs
->
avail_out
!=
0
)
if
(
bzs
->
avail_out
!=
0
)
{
_PyString_Resize
(
&
ret
,
(
Py_ssize_t
)(
BZS_TOTAL_OUT
(
bzs
)
-
totalout
));
if
(
PyBytes_Resize
(
ret
,
(
Py_ssize_t
)(
BZS_TOTAL_OUT
(
bzs
)
-
totalout
))
<
0
)
goto
error
;
}
RELEASE_LOCK
(
self
);
RELEASE_LOCK
(
self
);
return
ret
;
return
ret
;
...
@@ -1816,7 +1841,7 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
...
@@ -1816,7 +1841,7 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
goto
error
;
goto
error
;
}
}
ret
=
Py
String
_FromStringAndSize
(
NULL
,
bufsize
);
ret
=
Py
Bytes
_FromStringAndSize
(
NULL
,
bufsize
);
if
(
!
ret
)
if
(
!
ret
)
goto
error
;
goto
error
;
...
@@ -1835,7 +1860,7 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
...
@@ -1835,7 +1860,7 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
if
(
bzs
->
avail_in
!=
0
)
{
if
(
bzs
->
avail_in
!=
0
)
{
Py_DECREF
(
self
->
unused_data
);
Py_DECREF
(
self
->
unused_data
);
self
->
unused_data
=
self
->
unused_data
=
Py
String
_FromStringAndSize
(
bzs
->
next_in
,
Py
Bytes
_FromStringAndSize
(
bzs
->
next_in
,
bzs
->
avail_in
);
bzs
->
avail_in
);
}
}
self
->
running
=
0
;
self
->
running
=
0
;
...
@@ -1849,7 +1874,7 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
...
@@ -1849,7 +1874,7 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
break
;
/* no more input data */
break
;
/* no more input data */
if
(
bzs
->
avail_out
==
0
)
{
if
(
bzs
->
avail_out
==
0
)
{
bufsize
=
Util_NewBufferSize
(
bufsize
);
bufsize
=
Util_NewBufferSize
(
bufsize
);
if
(
_PyString_Resize
(
&
ret
,
bufsize
)
<
0
)
{
if
(
PyBytes_Resize
(
ret
,
bufsize
)
<
0
)
{
BZ2_bzDecompressEnd
(
bzs
);
BZ2_bzDecompressEnd
(
bzs
);
goto
error
;
goto
error
;
}
}
...
@@ -1860,8 +1885,11 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
...
@@ -1860,8 +1885,11 @@ BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
}
}
}
}
if
(
bzs
->
avail_out
!=
0
)
if
(
bzs
->
avail_out
!=
0
)
{
_PyString_Resize
(
&
ret
,
(
Py_ssize_t
)(
BZS_TOTAL_OUT
(
bzs
)
-
totalout
));
if
(
PyBytes_Resize
(
ret
,
(
Py_ssize_t
)(
BZS_TOTAL_OUT
(
bzs
)
-
totalout
))
<
0
)
goto
error
;
}
RELEASE_LOCK
(
self
);
RELEASE_LOCK
(
self
);
return
ret
;
return
ret
;
...
@@ -1897,7 +1925,7 @@ BZ2Decomp_init(BZ2DecompObject *self, PyObject *args, PyObject *kwargs)
...
@@ -1897,7 +1925,7 @@ BZ2Decomp_init(BZ2DecompObject *self, PyObject *args, PyObject *kwargs)
}
}
#endif
#endif
self
->
unused_data
=
Py
String_FromString
(
""
);
self
->
unused_data
=
Py
Bytes_FromStringAndSize
(
""
,
0
);
if
(
!
self
->
unused_data
)
if
(
!
self
->
unused_data
)
goto
error
;
goto
error
;
...
@@ -2031,7 +2059,7 @@ bz2_compress(PyObject *self, PyObject *args, PyObject *kwargs)
...
@@ -2031,7 +2059,7 @@ bz2_compress(PyObject *self, PyObject *args, PyObject *kwargs)
* data in one shot. We will check it later anyway. */
* data in one shot. We will check it later anyway. */
bufsize
=
datasize
+
(
datasize
/
100
+
1
)
+
600
;
bufsize
=
datasize
+
(
datasize
/
100
+
1
)
+
600
;
ret
=
Py
String
_FromStringAndSize
(
NULL
,
bufsize
);
ret
=
Py
Bytes
_FromStringAndSize
(
NULL
,
bufsize
);
if
(
!
ret
)
if
(
!
ret
)
return
NULL
;
return
NULL
;
...
@@ -2063,7 +2091,7 @@ bz2_compress(PyObject *self, PyObject *args, PyObject *kwargs)
...
@@ -2063,7 +2091,7 @@ bz2_compress(PyObject *self, PyObject *args, PyObject *kwargs)
}
}
if
(
bzs
->
avail_out
==
0
)
{
if
(
bzs
->
avail_out
==
0
)
{
bufsize
=
Util_NewBufferSize
(
bufsize
);
bufsize
=
Util_NewBufferSize
(
bufsize
);
if
(
_PyString_Resize
(
&
ret
,
bufsize
)
<
0
)
{
if
(
PyBytes_Resize
(
ret
,
bufsize
)
<
0
)
{
BZ2_bzCompressEnd
(
bzs
);
BZ2_bzCompressEnd
(
bzs
);
Py_DECREF
(
ret
);
Py_DECREF
(
ret
);
return
NULL
;
return
NULL
;
...
@@ -2073,8 +2101,12 @@ bz2_compress(PyObject *self, PyObject *args, PyObject *kwargs)
...
@@ -2073,8 +2101,12 @@ bz2_compress(PyObject *self, PyObject *args, PyObject *kwargs)
}
}
}
}
if
(
bzs
->
avail_out
!=
0
)
if
(
bzs
->
avail_out
!=
0
)
{
_PyString_Resize
(
&
ret
,
(
Py_ssize_t
)
BZS_TOTAL_OUT
(
bzs
));
if
(
PyBytes_Resize
(
ret
,
(
Py_ssize_t
)
BZS_TOTAL_OUT
(
bzs
))
<
0
)
{
Py_DECREF
(
ret
);
ret
=
NULL
;
}
}
BZ2_bzCompressEnd
(
bzs
);
BZ2_bzCompressEnd
(
bzs
);
return
ret
;
return
ret
;
...
@@ -2102,9 +2134,9 @@ bz2_decompress(PyObject *self, PyObject *args)
...
@@ -2102,9 +2134,9 @@ bz2_decompress(PyObject *self, PyObject *args)
return
NULL
;
return
NULL
;
if
(
datasize
==
0
)
if
(
datasize
==
0
)
return
Py
String_FromString
(
""
);
return
Py
Bytes_FromStringAndSize
(
""
,
0
);
ret
=
Py
String
_FromStringAndSize
(
NULL
,
bufsize
);
ret
=
Py
Bytes
_FromStringAndSize
(
NULL
,
bufsize
);
if
(
!
ret
)
if
(
!
ret
)
return
NULL
;
return
NULL
;
...
@@ -2143,7 +2175,7 @@ bz2_decompress(PyObject *self, PyObject *args)
...
@@ -2143,7 +2175,7 @@ bz2_decompress(PyObject *self, PyObject *args)
}
}
if
(
bzs
->
avail_out
==
0
)
{
if
(
bzs
->
avail_out
==
0
)
{
bufsize
=
Util_NewBufferSize
(
bufsize
);
bufsize
=
Util_NewBufferSize
(
bufsize
);
if
(
_PyString_Resize
(
&
ret
,
bufsize
)
<
0
)
{
if
(
PyBytes_Resize
(
ret
,
bufsize
)
<
0
)
{
BZ2_bzDecompressEnd
(
bzs
);
BZ2_bzDecompressEnd
(
bzs
);
Py_DECREF
(
ret
);
Py_DECREF
(
ret
);
return
NULL
;
return
NULL
;
...
@@ -2153,8 +2185,12 @@ bz2_decompress(PyObject *self, PyObject *args)
...
@@ -2153,8 +2185,12 @@ bz2_decompress(PyObject *self, PyObject *args)
}
}
}
}
if
(
bzs
->
avail_out
!=
0
)
if
(
bzs
->
avail_out
!=
0
)
{
_PyString_Resize
(
&
ret
,
(
Py_ssize_t
)
BZS_TOTAL_OUT
(
bzs
));
if
(
PyBytes_Resize
(
ret
,
(
Py_ssize_t
)
BZS_TOTAL_OUT
(
bzs
))
<
0
)
{
Py_DECREF
(
ret
);
ret
=
NULL
;
}
}
BZ2_bzDecompressEnd
(
bzs
);
BZ2_bzDecompressEnd
(
bzs
);
return
ret
;
return
ret
;
...
...
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