Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Ark
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jan Paul Batrina
Ark
Commits
0aec0e08
Commit
0aec0e08
authored
Aug 17, 2020
by
Alexey Ivanov
🐢
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
libzipplugin.cpp: replace zip_fopen/zip_fclose with unique_ptr
parent
aa4a790d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
13 deletions
+7
-13
plugins/libzipplugin/libzipplugin.cpp
plugins/libzipplugin/libzipplugin.cpp
+7
-13
No files found.
plugins/libzipplugin/libzipplugin.cpp
View file @
0aec0e08
...
...
@@ -479,9 +479,9 @@ bool LibzipPlugin::testArchive()
return
false
;
}
zip_file
*
zipFile
=
zip_fopen_index
(
archive
,
i
,
0
)
;
std
::
unique_ptr
<
zip_file
,
decltype
(
&
zip_fclose
)
>
zipFile
{
zip_fopen_index
(
archive
,
i
,
0
),
&
zip_fclose
}
;
std
::
unique_ptr
<
uchar
[]
>
buf
(
new
uchar
[
statBuffer
.
size
]);
const
int
len
=
zip_fread
(
zipFile
,
buf
.
get
(),
statBuffer
.
size
);
const
int
len
=
zip_fread
(
zipFile
.
get
(),
buf
.
get
(),
statBuffer
.
size
)
if
(
len
==
-
1
||
uint
(
len
)
!=
statBuffer
.
size
)
{
qCCritical
(
ARK
)
<<
"Failed to read data for"
<<
statBuffer
.
name
;
return
false
;
...
...
@@ -490,9 +490,6 @@ bool LibzipPlugin::testArchive()
qCCritical
(
ARK
)
<<
"CRC check failed for"
<<
statBuffer
.
name
;
return
false
;
}
// Free libzip file entry from the memory
zip_fclose
(
zipFile
);
emit
progress
(
float
(
i
)
/
nofEntries
);
}
...
...
@@ -676,11 +673,10 @@ bool LibzipPlugin::extractEntry(zip_t *archive, const QString &entry, const QStr
}
// Handle password-protected files.
zip_file
*
zipFile
=
nullptr
;
std
::
unique_ptr
<
zip_file
,
decltype
(
&
zip_fclose
)
>
zipFile
{
zip_fopen
(
archive
,
entry
.
toUtf8
().
constData
(),
0
),
&
zip_fclose
}
;
bool
firstTry
=
true
;
while
(
!
zipFile
)
{
zipFile
=
zip_fopen
(
archive
,
entry
.
toUtf8
().
constData
(),
0
);
if
(
zipFile
)
{
while
(
!
zipFile
.
get
())
{
if
(
zipFile
.
get
())
{
break
;
}
else
if
(
zip_error_code_zip
(
zip_get_error
(
archive
))
==
ZIP_ER_NOPASSWD
||
zip_error_code_zip
(
zip_get_error
(
archive
))
==
ZIP_ER_WRONGPASSWD
)
{
...
...
@@ -718,7 +714,7 @@ bool LibzipPlugin::extractEntry(zip_t *archive, const QString &entry, const QStr
qulonglong
sum
=
0
;
char
buf
[
1000
];
while
(
sum
!=
statBuffer
.
size
)
{
const
auto
readBytes
=
zip_fread
(
zipFile
,
buf
,
1000
);
const
auto
readBytes
=
zip_fread
(
zipFile
.
get
()
,
buf
,
1000
);
if
(
readBytes
<
0
)
{
qCCritical
(
ARK
)
<<
"Failed to read data"
;
emit
error
(
xi18n
(
"Failed to read data for entry: %1"
,
entry
));
...
...
@@ -757,9 +753,7 @@ bool LibzipPlugin::extractEntry(zip_t *archive, const QString &entry, const QStr
default:
// TODO: non-UNIX.
break
;
}
// Free libzip file entry from the memory
zip_fclose
(
zipFile
);
// Close extracted file, flush any buffered data
file
.
close
();
}
...
...
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