Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
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
nexedi
MariaDB
Commits
edd0b03e
Commit
edd0b03e
authored
May 02, 2023
by
Oleksandr Byelkin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '10.3' into 10.4
parents
ddcc9d22
55a53949
Changes
38
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
625 additions
and
269 deletions
+625
-269
libmariadb
libmariadb
+1
-1
mysql-test/std_data/rpl/master-bin-seq_10.3.36.000001
mysql-test/std_data/rpl/master-bin-seq_10.3.36.000001
+0
-0
mysql-test/suite/rpl/r/rpl_parallel_seq.result
mysql-test/suite/rpl/r/rpl_parallel_seq.result
+85
-0
mysql-test/suite/rpl/t/rpl_parallel_seq.test
mysql-test/suite/rpl/t/rpl_parallel_seq.test
+131
-0
sql/ha_sequence.cc
sql/ha_sequence.cc
+2
-0
sql/log_event.cc
sql/log_event.cc
+24
-3
sql/rpl_parallel.cc
sql/rpl_parallel.cc
+6
-1
sql/slave.cc
sql/slave.cc
+28
-7
sql/slave.h
sql/slave.h
+2
-1
sql/sql_sequence.cc
sql/sql_sequence.cc
+13
-4
zlib/ChangeLog
zlib/ChangeLog
+18
-6
zlib/LICENSE
zlib/LICENSE
+22
-0
zlib/README
zlib/README
+2
-2
zlib/compress.c
zlib/compress.c
+3
-3
zlib/crc32.c
zlib/crc32.c
+21
-12
zlib/deflate.c
zlib/deflate.c
+112
-106
zlib/deflate.h
zlib/deflate.h
+2
-2
zlib/gzlib.c
zlib/gzlib.c
+1
-1
zlib/gzread.c
zlib/gzread.c
+3
-5
zlib/gzwrite.c
zlib/gzwrite.c
+1
-1
zlib/infback.c
zlib/infback.c
+10
-7
zlib/inflate.c
zlib/inflate.c
+5
-2
zlib/inftrees.c
zlib/inftrees.c
+2
-2
zlib/inftrees.h
zlib/inftrees.h
+1
-1
zlib/make_vms.com
zlib/make_vms.com
+2
-2
zlib/qnx/package.qpg
zlib/qnx/package.qpg
+5
-5
zlib/treebuild.xml
zlib/treebuild.xml
+2
-2
zlib/trees.c
zlib/trees.c
+61
-62
zlib/uncompr.c
zlib/uncompr.c
+2
-2
zlib/win32/README-WIN32.txt
zlib/win32/README-WIN32.txt
+2
-2
zlib/win32/zlib1.rc
zlib/win32/zlib1.rc
+1
-1
zlib/zconf.h.cmakein
zlib/zconf.h.cmakein
+16
-3
zlib/zconf.h.in
zlib/zconf.h.in
+16
-3
zlib/zlib.3
zlib/zlib.3
+2
-2
zlib/zlib.h
zlib/zlib.h
+9
-9
zlib/zlib2ansi
zlib/zlib2ansi
+2
-2
zlib/zutil.c
zlib/zutil.c
+9
-7
zlib/zutil.h
zlib/zutil.h
+1
-0
No files found.
libmariadb
@
f5a4c73d
Subproject commit
d204e83104222844251b221e9be7eb3dd9f8d63d
Subproject commit
f5a4c73df4fa30a2fd0c5fad65338f455665b334
mysql-test/std_data/rpl/master-bin-seq_10.3.36.000001
0 → 100644
View file @
edd0b03e
File added
mysql-test/suite/rpl/r/rpl_parallel_seq.result
0 → 100644
View file @
edd0b03e
include/master-slave.inc
[connection master]
connection slave;
include/stop_slave.inc
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
# MDEV-29621 the sequence engine binlog_row_image-full events
# MDL-deadlock on the parallel slave.
connection master;
CREATE SEQUENCE s1;
SET @@session.binlog_row_image=FULL;
SET @@session.debug_dbug="+d,binlog_force_commit_id";
SET @commit_id=7;
SET @@gtid_seq_no=100;
SELECT NEXT VALUE FOR s1;
NEXT VALUE FOR s1
1
INSERT INTO s1 VALUES(2, 1, 10, 1, 2, 1, 1, 0);
SET @@session.debug_dbug="";
connection slave;
SET @@global.slave_parallel_threads=2;
SET @@global.slave_parallel_mode=optimistic;
SET @@global.debug_dbug="+d,hold_worker_on_schedule";
include/start_slave.inc
SET DEBUG_SYNC = 'now SIGNAL continue_worker';
connection master;
DROP SEQUENCE s1;
connection slave;
include/stop_slave.inc
# Simulate buggy 10.3.36 master to prove the parallel applier
# does not deadlock now at replaying the above master load.
connection master;
include/rpl_stop_server.inc [server_number=1]
include/rpl_start_server.inc [server_number=1]
connection slave;
RESET MASTER;
SET @@global.gtid_slave_pos="";
CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_use_gtid=slave_pos;
START SLAVE UNTIL MASTER_GTID_POS='0-1-102';
SET DEBUG_SYNC = 'now SIGNAL continue_worker';
# Normal stop is expected
include/wait_for_slave_to_stop.inc
# MDEV-31077 ALTER SEQUENCE may end up in optimistic parallel slave binlog out-of-order
# The test proves ALTER-SEQUENCE binlogs first before the following transaction does so.
connection slave;
include/stop_slave.inc
Warnings:
Note 1255 Slave already has been stopped
RESET MASTER;
SET @@global.gtid_slave_pos="";
SET @@global.gtid_strict_mode=1;
connection master;
RESET MASTER;
CREATE TABLE ti (a INT) ENGINE=innodb;
CREATE SEQUENCE s2 ENGINE=innodb;
SET @@gtid_seq_no=100;
ALTER SEQUENCE s2 restart with 1;
INSERT INTO ti SET a=1;
include/save_master_gtid.inc
SELECT @@global.gtid_binlog_state "Master gtid state";
Master gtid state
0-1-101
connection slave;
include/start_slave.inc
SELECT @@global.gtid_binlog_state, @@global.gtid_slave_pos as "no 100,101 yet in both";
@@global.gtid_binlog_state no 100,101 yet in both
0-1-2 0-1-2
SET DEBUG_SYNC = 'now SIGNAL continue_worker';
# Normal sync with master proves the fixes correct
include/sync_with_master_gtid.inc
SELECT @@global.gtid_binlog_state, @@global.gtid_slave_pos as "all through 101 have been committed";
@@global.gtid_binlog_state all through 101 have been committed
0-1-101 0-1-101
connection slave;
include/stop_slave.inc
SET debug_sync = RESET;
SET @@global.slave_parallel_threads= 0;
SET @@global.slave_parallel_mode= conservative;
SET @@global.debug_dbug = "";
SET @@global.gtid_strict_mode=0;
include/start_slave.inc
connection master;
DROP SEQUENCE s2;
DROP TABLE ti;
connection slave;
include/rpl_end.inc
mysql-test/suite/rpl/t/rpl_parallel_seq.test
0 → 100644
View file @
edd0b03e
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_debug
.
inc
--
source
include
/
have_debug_sync
.
inc
--
source
include
/
have_binlog_format_row
.
inc
--
source
include
/
master
-
slave
.
inc
--
connection
slave
--
source
include
/
stop_slave
.
inc
ALTER
TABLE
mysql
.
gtid_slave_pos
ENGINE
=
InnoDB
;
--
echo
# MDEV-29621 the sequence engine binlog_row_image-full events
--
echo
# MDL-deadlock on the parallel slave.
--
connection
master
CREATE
SEQUENCE
s1
;
SET
@@
session
.
binlog_row_image
=
FULL
;
SET
@@
session
.
debug_dbug
=
"+d,binlog_force_commit_id"
;
SET
@
commit_id
=
7
;
SET
@@
gtid_seq_no
=
100
;
SELECT
NEXT
VALUE
FOR
s1
;
INSERT
INTO
s1
VALUES
(
2
,
1
,
10
,
1
,
2
,
1
,
1
,
0
);
SET
@@
session
.
debug_dbug
=
""
;
--
connection
slave
--
let
$slave_parallel_threads
=
`select @@global.slave_parallel_threads`
--
let
$slave_parallel_mode
=
`select @@global.slave_parallel_mode`
SET
@@
global
.
slave_parallel_threads
=
2
;
SET
@@
global
.
slave_parallel_mode
=
optimistic
;
SET
@@
global
.
debug_dbug
=
"+d,hold_worker_on_schedule"
;
--
source
include
/
start_slave
.
inc
--
let
$wait_condition
=
SELECT
count
(
*
)
=
1
FROM
information_schema
.
processlist
WHERE
state
LIKE
"Waiting for prior transaction to start commit before starting%"
--
source
include
/
wait_condition
.
inc
SET
DEBUG_SYNC
=
'now SIGNAL continue_worker'
;
--
connection
master
DROP
SEQUENCE
s1
;
--
sync_slave_with_master
--
source
include
/
stop_slave
.
inc
--
echo
# Simulate buggy 10.3.36 master to prove the parallel applier
--
echo
# does not deadlock now at replaying the above master load.
--
connection
master
--
let
$datadir
=
`SELECT @@datadir`
--
let
$rpl_server_number
=
1
--
source
include
/
rpl_stop_server
.
inc
--
remove_file
$datadir
/
master
-
bin
.
000001
--
copy_file
$MYSQL_TEST_DIR
/
std_data
/
rpl
/
master
-
bin
-
seq_10
.
3.36
.
000001
$datadir
/
master
-
bin
.
000001
--
let
$rpl_server_number
=
1
--
source
include
/
rpl_start_server
.
inc
--
source
include
/
wait_until_connected_again
.
inc
--
save_master_pos
--
connection
slave
RESET
MASTER
;
SET
@@
global
.
gtid_slave_pos
=
""
;
--
replace_result
$SERVER_MYPORT_1
SERVER_MYPORT_1
eval
CHANGE
MASTER
TO
master_host
=
'127.0.0.1'
,
master_port
=
$SERVER_MYPORT_1
,
master_user
=
'root'
,
master_use_gtid
=
slave_pos
;
START
SLAVE
UNTIL
MASTER_GTID_POS
=
'0-1-102'
;
--
let
$wait_condition
=
SELECT
count
(
*
)
=
1
FROM
information_schema
.
processlist
WHERE
state
LIKE
"Waiting for prior transaction to commit"
--
source
include
/
wait_condition
.
inc
SET
DEBUG_SYNC
=
'now SIGNAL continue_worker'
;
--
echo
# Normal stop is expected
--
source
include
/
wait_for_slave_to_stop
.
inc
--
echo
# MDEV-31077 ALTER SEQUENCE may end up in optimistic parallel slave binlog out-of-order
--
echo
# The test proves ALTER-SEQUENCE binlogs first before the following transaction does so.
--
connection
slave
--
source
include
/
stop_slave
.
inc
RESET
MASTER
;
SET
@@
global
.
gtid_slave_pos
=
""
;
--
let
$slave_gtid_strict_mode
=
`select @@global.gtid_strict_mode`
SET
@@
global
.
gtid_strict_mode
=
1
;
--
connection
master
RESET
MASTER
;
# Load from master
CREATE
TABLE
ti
(
a
INT
)
ENGINE
=
innodb
;
CREATE
SEQUENCE
s2
ENGINE
=
innodb
;
SET
@@
gtid_seq_no
=
100
;
ALTER
SEQUENCE
s2
restart
with
1
;
INSERT
INTO
ti
SET
a
=
1
;
--
source
include
/
save_master_gtid
.
inc
SELECT
@@
global
.
gtid_binlog_state
"Master gtid state"
;
--
connection
slave
--
source
include
/
start_slave
.
inc
--
let
$wait_condition
=
SELECT
count
(
*
)
=
1
FROM
information_schema
.
processlist
WHERE
state
LIKE
"Waiting for prior transaction to commit"
--
source
include
/
wait_condition
.
inc
SELECT
@@
global
.
gtid_binlog_state
,
@@
global
.
gtid_slave_pos
as
"no 100,101 yet in both"
;
# DEBUG_DBUG extension point of hold_worker_on_schedule is reused
# (gets deployed) in Sql_cmd_alter_sequence::execute.
SET
DEBUG_SYNC
=
'now SIGNAL continue_worker'
;
--
echo
# Normal sync with master proves the fixes correct
--
source
include
/
sync_with_master_gtid
.
inc
SELECT
@@
global
.
gtid_binlog_state
,
@@
global
.
gtid_slave_pos
as
"all through 101 have been committed"
;
#
# MDEV-29621/MDEV-31077 clean up.
#
--
connection
slave
--
source
include
/
stop_slave
.
inc
SET
debug_sync
=
RESET
;
--
eval
SET
@@
global
.
slave_parallel_threads
=
$slave_parallel_threads
--
eval
SET
@@
global
.
slave_parallel_mode
=
$slave_parallel_mode
SET
@@
global
.
debug_dbug
=
""
;
--
eval
SET
@@
global
.
gtid_strict_mode
=
$slave_gtid_strict_mode
--
source
include
/
start_slave
.
inc
--
connection
master
DROP
SEQUENCE
s2
;
DROP
TABLE
ti
;
--
sync_slave_with_master
--
source
include
/
rpl_end
.
inc
sql/ha_sequence.cc
View file @
edd0b03e
...
...
@@ -240,6 +240,8 @@ int ha_sequence::write_row(const uchar *buf)
on master and slaves
- Check that the new row is an accurate SEQUENCE object
*/
/* mark a full binlog image insert to force non-parallel slave */
thd
->
transaction
.
stmt
.
mark_trans_did_ddl
();
if
(
table
->
s
->
tmp_table
==
NO_TMP_TABLE
&&
thd
->
mdl_context
.
upgrade_shared_lock
(
table
->
mdl_ticket
,
MDL_EXCLUSIVE
,
...
...
sql/log_event.cc
View file @
edd0b03e
...
...
@@ -13762,8 +13762,14 @@ Rows_log_event::write_row(rpl_group_info *rgi,
int
Rows_log_event
::
update_sequence
()
{
TABLE
*
table
=
m_table
;
// pointer to event's table
bool
old_master
=
false
;
int
err
=
0
;
if
(
!
bitmap_is_set
(
table
->
rpl_write_set
,
MIN_VALUE_FIELD_NO
))
if
(
!
bitmap_is_set
(
table
->
rpl_write_set
,
MIN_VALUE_FIELD_NO
)
||
(
!
(
table
->
in_use
->
rgi_slave
->
gtid_ev_flags2
&
Gtid_log_event
::
FL_DDL
)
&&
!
(
old_master
=
rpl_master_has_bug
(
thd
->
rgi_slave
->
rli
,
29621
,
FALSE
,
FALSE
,
FALSE
,
TRUE
))))
{
/* This event come from a setval function executed on the master.
Update the sequence next_number and round, like we do with setval()
...
...
@@ -13776,12 +13782,27 @@ int Rows_log_event::update_sequence()
return
table
->
s
->
sequence
->
set_value
(
table
,
nextval
,
round
,
0
)
>
0
;
}
if
(
thd
->
rgi_slave
->
is_parallel_exec
&&
old_master
)
{
DBUG_ASSERT
(
thd
->
rgi_slave
->
parallel_entry
);
/*
With parallel replication enabled, we can't execute alongside any other
transaction in which we may depend, so we force retry to release
the server layer table lock for possible prior in binlog order
same table transactions.
*/
if
(
thd
->
rgi_slave
->
parallel_entry
->
last_committed_sub_id
<
thd
->
rgi_slave
->
wait_commit_sub_id
)
{
err
=
ER_LOCK_DEADLOCK
;
my_error
(
err
,
MYF
(
0
));
}
}
/*
Update all fields in table and update the active sequence, like with
ALTER SEQUENCE
*/
return
table
->
file
->
ha_write_row
(
table
->
record
[
0
])
;
return
err
==
0
?
table
->
file
->
ha_write_row
(
table
->
record
[
0
])
:
err
;
}
...
...
sql/rpl_parallel.cc
View file @
edd0b03e
...
...
@@ -2847,7 +2847,12 @@ rpl_parallel::do_event(rpl_group_info *serial_rgi, Log_event *ev,
if
(
mode
<=
SLAVE_PARALLEL_MINIMAL
||
!
(
gtid_flags
&
Gtid_log_event
::
FL_GROUP_COMMIT_ID
)
||
e
->
last_commit_id
!=
gtid_ev
->
commit_id
)
e
->
last_commit_id
!=
gtid_ev
->
commit_id
||
/*
MULTI_BATCH is also set when the current gtid even being a member
of a commit group is flagged as DDL which disallows parallel.
*/
(
gtid_flags
&
Gtid_log_event
::
FL_DDL
))
flags
|=
group_commit_orderer
::
MULTI_BATCH
;
/* Make sure we do not attempt to run DDL in parallel speculatively. */
if
(
gtid_flags
&
Gtid_log_event
::
FL_DDL
)
...
...
sql/slave.cc
View file @
edd0b03e
...
...
@@ -8086,14 +8086,15 @@ int rotate_relay_log(Master_info* mi)
@return TRUE if master has the bug, FALSE if it does not.
*/
bool
rpl_master_has_bug
(
const
Relay_log_info
*
rli
,
uint
bug_id
,
bool
report
,
bool
(
*
pred
)(
const
void
*
),
const
void
*
param
)
bool
(
*
pred
)(
const
void
*
),
const
void
*
param
,
bool
maria_master
)
{
struct
st_version_range_for_one_bug
{
uint
bug_id
;
Version
introduced_in
;
// first version with bug
Version
fixed_in
;
// first version with fix
};
static
struct
st_version_range_for_one_bug
versions_for_
all
_bugs
[]
=
static
struct
st_version_range_for_one_bug
versions_for_
their
_bugs
[]
=
{
{
24432
,
{
5
,
0
,
24
},
{
5
,
0
,
38
}
},
{
24432
,
{
5
,
1
,
12
},
{
5
,
1
,
17
}
},
...
...
@@ -8101,11 +8102,27 @@ bool rpl_master_has_bug(const Relay_log_info *rli, uint bug_id, bool report,
{
33029
,
{
5
,
1
,
0
},
{
5
,
1
,
12
}
},
{
37426
,
{
5
,
1
,
0
},
{
5
,
1
,
26
}
},
};
static
struct
st_version_range_for_one_bug
versions_for_our_bugs
[]
=
{
{
29621
,
{
10
,
3
,
36
},
{
10
,
3
,
39
}
},
{
29621
,
{
10
,
4
,
26
},
{
10
,
4
,
29
}
},
{
29621
,
{
10
,
5
,
17
},
{
10
,
5
,
20
}
},
{
29621
,
{
10
,
6
,
9
},
{
10
,
6
,
13
}
},
{
29621
,
{
10
,
7
,
5
},
{
10
,
7
,
9
}
},
{
29621
,
{
10
,
8
,
4
},
{
10
,
8
,
8
}
},
{
29621
,
{
10
,
9
,
2
},
{
10
,
9
,
6
}
},
{
29621
,
{
10
,
10
,
1
},
{
10
,
10
,
4
}
},
{
29621
,
{
10
,
11
,
1
},
{
10
,
11
,
3
}
},
};
const
Version
&
master_ver
=
rli
->
relay_log
.
description_event_for_exec
->
server_version_split
;
struct
st_version_range_for_one_bug
*
versions_for_all_bugs
=
maria_master
?
versions_for_our_bugs
:
versions_for_their_bugs
;
uint
all_size
=
maria_master
?
sizeof
(
versions_for_our_bugs
)
/
sizeof
(
*
versions_for_our_bugs
)
:
sizeof
(
versions_for_their_bugs
)
/
sizeof
(
*
versions_for_their_bugs
);
for
(
uint
i
=
0
;
i
<
sizeof
(
versions_for_all_bugs
)
/
sizeof
(
*
versions_for_all_bugs
);
i
++
)
for
(
uint
i
=
0
;
i
<
all_size
;
i
++
)
{
const
Version
&
introduced_in
=
versions_for_all_bugs
[
i
].
introduced_in
;
const
Version
&
fixed_in
=
versions_for_all_bugs
[
i
].
fixed_in
;
...
...
@@ -8114,18 +8131,21 @@ bool rpl_master_has_bug(const Relay_log_info *rli, uint bug_id, bool report,
fixed_in
>
master_ver
&&
(
pred
==
NULL
||
(
*
pred
)(
param
)))
{
const
char
*
bug_source
=
maria_master
?
"https://jira.mariadb.org/browse/MDEV-"
:
"http://bugs.mysql.com/bug.php?id="
;
if
(
!
report
)
return
TRUE
;
// a short message for SHOW SLAVE STATUS (message length constraints)
my_printf_error
(
ER_UNKNOWN_ERROR
,
"master may suffer from"
"
http://bugs.mysql.com/bug.php?id=
%u"
"
%s
%u"
" so slave stops; check error log on slave"
" for more info"
,
MYF
(
0
),
bug_id
);
" for more info"
,
MYF
(
0
),
bug_
source
,
bug_
id
);
// a verbose message for the error log
rli
->
report
(
ERROR_LEVEL
,
ER_UNKNOWN_ERROR
,
NULL
,
"According to the master's version ('%s'),"
" it is probable that master suffers from this bug:"
"
http://bugs.mysql.com/bug.php?id=
%u"
"
%s
%u"
" and thus replicating the current binary log event"
" may make the slave's data become different from the"
" master's data."
...
...
@@ -8139,6 +8159,7 @@ bool rpl_master_has_bug(const Relay_log_info *rli, uint bug_id, bool report,
" equal to '%d.%d.%d'. Then replication can be"
" restarted."
,
rli
->
relay_log
.
description_event_for_exec
->
server_version
,
bug_source
,
bug_id
,
fixed_in
[
0
],
fixed_in
[
1
],
fixed_in
[
2
]);
return
TRUE
;
...
...
sql/slave.h
View file @
edd0b03e
...
...
@@ -231,7 +231,8 @@ bool show_all_master_info(THD* thd);
void
show_binlog_info_get_fields
(
THD
*
thd
,
List
<
Item
>
*
field_list
);
bool
show_binlog_info
(
THD
*
thd
);
bool
rpl_master_has_bug
(
const
Relay_log_info
*
rli
,
uint
bug_id
,
bool
report
,
bool
(
*
pred
)(
const
void
*
),
const
void
*
param
);
bool
(
*
pred
)(
const
void
*
),
const
void
*
param
,
bool
maria_master
=
false
);
bool
rpl_master_erroneous_autoinc
(
THD
*
thd
);
const
char
*
print_slave_db_safe
(
const
char
*
db
);
...
...
sql/sql_sequence.cc
View file @
edd0b03e
...
...
@@ -1012,10 +1012,19 @@ bool Sql_cmd_alter_sequence::execute(THD *thd)
else
table
->
file
->
print_error
(
error
,
MYF
(
0
));
table
->
s
->
sequence
->
write_unlock
(
table
);
{
wait_for_commit
*
suspended_wfc
=
thd
->
suspend_subsequent_commits
();
if
(
trans_commit_stmt
(
thd
))
error
=
1
;
if
(
trans_commit_implicit
(
thd
))
error
=
1
;
thd
->
resume_subsequent_commits
(
suspended_wfc
);
DBUG_EXECUTE_IF
(
"hold_worker_on_schedule"
,
{
/* delay binlogging of a parent trx in rpl_parallel_seq */
my_sleep
(
100000
);
});
}
if
(
likely
(
!
error
))
error
=
write_bin_log
(
thd
,
1
,
thd
->
query
(),
thd
->
query_length
());
if
(
likely
(
!
error
))
...
...
zlib/ChangeLog
View file @
edd0b03e
ChangeLog file for zlib
Changes in 1.2.13 (13 Oct 2022)
- Fix configure issue that discarded provided CC definition
- Correct incorrect inputs provided to the CRC functions
- Repair prototypes and exporting of new CRC functions
- Fix inflateBack to detect invalid input with distances too far
- Have infback() deliver all of the available output up to any error
- Fix a bug when getting a gzip header extra field with inflate()
- Fix bug in block type selection when Z_FIXED used
- Tighten deflateBound bounds
- Remove deleted assembler code references
- Various portability and appearance improvements
Changes in 1.2.12 (27 Mar 2022)
- Cygwin does not have _wopen(), so do not create gzopen_w() there
- Permit a deflateParams() parameter change as soon as possible
...
...
@@ -159,7 +171,7 @@ Changes in 1.2.7.1 (24 Mar 2013)
- Fix types in contrib/minizip to match result of get_crc_table()
- Simplify contrib/vstudio/vc10 with 'd' suffix
- Add TOP support to win32/Makefile.msc
- Suport i686 and amd64 assembler builds in CMakeLists.txt
- Sup
p
ort i686 and amd64 assembler builds in CMakeLists.txt
- Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h
- Add vc11 and vc12 build files to contrib/vstudio
- Add gzvprintf() as an undocumented function in zlib
...
...
@@ -359,14 +371,14 @@ Changes in 1.2.5.1 (10 Sep 2011)
- Use u4 type for crc_table to avoid conversion warnings
- Apply casts in zlib.h to avoid conversion warnings
- Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller]
- Improve inflateSync() documentation to note indetermina
n
cy
- Improve inflateSync() documentation to note indeterminacy
- Add deflatePending() function to return the amount of pending output
- Correct the spelling of "specification" in FAQ [Randers-Pehrson]
- Add a check in configure for stdarg.h, use for gzprintf()
- Check that pointers fit in ints when gzprint() compiled old style
- Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler]
- Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt]
- Add debug records in ass
me
bler code [Londer]
- Add debug records in ass
em
bler code [Londer]
- Update RFC references to use http://tools.ietf.org/html/... [Li]
- Add --archs option, use of libtool to configure for Mac OS X [Borstel]
...
...
@@ -1033,7 +1045,7 @@ Changes in 1.2.0.1 (17 March 2003)
- Include additional header file on VMS for off_t typedef
- Try to use _vsnprintf where it supplants vsprintf [Vollant]
- Add some casts in inffast.c
- En
c
hance comments in zlib.h on what happens if gzprintf() tries to
- Enhance comments in zlib.h on what happens if gzprintf() tries to
write more than 4095 bytes before compression
- Remove unused state from inflateBackEnd()
- Remove exit(0) from minigzip.c, example.c
...
...
@@ -1211,7 +1223,7 @@ Changes in 1.0.9 (17 Feb 1998)
- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8
- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi)
- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with
the declaration of FAR (Gilles V
O
llant)
the declaration of FAR (Gilles V
o
llant)
- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann)
- read_buf buf parameter of type Bytef* instead of charf*
- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout)
...
...
@@ -1567,7 +1579,7 @@ Changes in 0.4:
- renamed deflateOptions as deflateInit2, call one or the other but not both
- added the method parameter for deflateInit2
- added inflateInit2
- simplied considerably deflateInit and inflateInit by not supporting
- simpli
fi
ed considerably deflateInit and inflateInit by not supporting
user-provided history buffer. This is supported only in deflateInit2
and inflateInit2
...
...
zlib/LICENSE
0 → 100644
View file @
edd0b03e
Copyright notice:
(C) 1995-2022 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
zlib/README
View file @
edd0b03e
ZLIB DATA COMPRESSION LIBRARY
zlib 1.2.1
2
is a general purpose data compression library. All the code is
zlib 1.2.1
3
is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
...
...
@@ -31,7 +31,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available at
http://marknelson.us/1997/01/01/zlib-engine/ .
The changes made in version 1.2.1
2
are documented in the file ChangeLog.
The changes made in version 1.2.1
3
are documented in the file ChangeLog.
Unsupported third party contributions are provided in directory contrib/ .
...
...
zlib/compress.c
View file @
edd0b03e
...
...
@@ -19,7 +19,7 @@
memory, Z_BUF_ERROR if there was not enough room in the output buffer,
Z_STREAM_ERROR if the level parameter is invalid.
*/
int
ZEXPORT
compress2
(
dest
,
destLen
,
source
,
sourceLen
,
level
)
int
ZEXPORT
compress2
(
dest
,
destLen
,
source
,
sourceLen
,
level
)
Bytef
*
dest
;
uLongf
*
destLen
;
const
Bytef
*
source
;
...
...
@@ -65,7 +65,7 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
/* ===========================================================================
*/
int
ZEXPORT
compress
(
dest
,
destLen
,
source
,
sourceLen
)
int
ZEXPORT
compress
(
dest
,
destLen
,
source
,
sourceLen
)
Bytef
*
dest
;
uLongf
*
destLen
;
const
Bytef
*
source
;
...
...
@@ -78,7 +78,7 @@ int ZEXPORT compress (dest, destLen, source, sourceLen)
If the default memLevel or windowBits for deflateInit() is changed, then
this function needs to be updated.
*/
uLong
ZEXPORT
compressBound
(
sourceLen
)
uLong
ZEXPORT
compressBound
(
sourceLen
)
uLong
sourceLen
;
{
return
sourceLen
+
(
sourceLen
>>
12
)
+
(
sourceLen
>>
14
)
+
...
...
zlib/crc32.c
View file @
edd0b03e
...
...
@@ -98,13 +98,22 @@
# endif
#endif
/* If available, use the ARM processor CRC32 instruction. */
#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
# define ARMCRC32
#endif
/* Local functions. */
local
z_crc_t
multmodp
OF
((
z_crc_t
a
,
z_crc_t
b
));
local
z_crc_t
x2nmodp
OF
((
z_off64_t
n
,
unsigned
k
));
/* If available, use the ARM processor CRC32 instruction. */
#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
# define ARMCRC32
#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
local
z_word_t
byte_swap
OF
((
z_word_t
word
));
#endif
#if defined(W) && !defined(ARMCRC32)
local
z_crc_t
crc_word
OF
((
z_word_t
data
));
local
z_word_t
crc_word_big
OF
((
z_word_t
data
));
#endif
#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
...
...
@@ -630,7 +639,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
#endif
/* DYNAMIC_CRC_TABLE */
/* Pre-condition the CRC */
crc
^=
0xffffffff
;
crc
=
(
~
crc
)
&
0xffffffff
;
/* Compute the CRC up to a word boundary. */
while
(
len
&&
((
z_size_t
)
buf
&
7
)
!=
0
)
{
...
...
@@ -645,8 +654,8 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
len
&=
7
;
/* Do three interleaved CRCs to realize the throughput of one crc32x
instruction per cycle. Each CRC is calcu
ated on Z_BATCH words. The thre
e
CRCs are combined into a single CRC after each set of batches. */
instruction per cycle. Each CRC is calcu
lated on Z_BATCH words. Th
e
three
CRCs are combined into a single CRC after each set of batches. */
while
(
num
>=
3
*
Z_BATCH
)
{
crc1
=
0
;
crc2
=
0
;
...
...
@@ -749,7 +758,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
#endif
/* DYNAMIC_CRC_TABLE */
/* Pre-condition the CRC */
crc
^=
0xffffffff
;
crc
=
(
~
crc
)
&
0xffffffff
;
#ifdef W
...
...
@@ -1077,7 +1086,7 @@ uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
#ifdef DYNAMIC_CRC_TABLE
once
(
&
made
,
make_crc_table
);
#endif
/* DYNAMIC_CRC_TABLE */
return
multmodp
(
x2nmodp
(
len2
,
3
),
crc1
)
^
crc2
;
return
multmodp
(
x2nmodp
(
len2
,
3
),
crc1
)
^
(
crc2
&
0xffffffff
)
;
}
/* ========================================================================= */
...
...
@@ -1086,7 +1095,7 @@ uLong ZEXPORT crc32_combine(crc1, crc2, len2)
uLong
crc2
;
z_off_t
len2
;
{
return
crc32_combine64
(
crc1
,
crc2
,
len2
);
return
crc32_combine64
(
crc1
,
crc2
,
(
z_off64_t
)
len2
);
}
/* ========================================================================= */
...
...
@@ -1103,14 +1112,14 @@ uLong ZEXPORT crc32_combine_gen64(len2)
uLong
ZEXPORT
crc32_combine_gen
(
len2
)
z_off_t
len2
;
{
return
crc32_combine_gen64
(
len2
);
return
crc32_combine_gen64
(
(
z_off64_t
)
len2
);
}
/* ========================================================================= */
uLong
crc32_combine_op
(
crc1
,
crc2
,
op
)
uLong
ZEXPORT
crc32_combine_op
(
crc1
,
crc2
,
op
)
uLong
crc1
;
uLong
crc2
;
uLong
op
;
{
return
multmodp
(
op
,
crc1
)
^
crc2
;
return
multmodp
(
op
,
crc1
)
^
(
crc2
&
0xffffffff
)
;
}
zlib/deflate.c
View file @
edd0b03e
This diff is collapsed.
Click to expand it.
zlib/deflate.h
View file @
edd0b03e
...
...
@@ -329,8 +329,8 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
# define _tr_tally_dist(s, distance, length, flush) \
{ uch len = (uch)(length); \
ush dist = (ush)(distance); \
s->sym_buf[s->sym_next++] = (uch
f)
dist; \
s->sym_buf[s->sym_next++] =
dist >> 8
; \
s->sym_buf[s->sym_next++] = (uch
)
dist; \
s->sym_buf[s->sym_next++] =
(uch)(dist >> 8)
; \
s->sym_buf[s->sym_next++] = len; \
dist--; \
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
...
...
zlib/gzlib.c
View file @
edd0b03e
...
...
@@ -30,7 +30,7 @@ local gzFile gz_open OF((const void *, int, const char *));
The gz_strwinerror function does not change the current setting of
GetLastError. */
char
ZLIB_INTERNAL
*
gz_strwinerror
(
error
)
char
ZLIB_INTERNAL
*
gz_strwinerror
(
error
)
DWORD
error
;
{
static
char
buf
[
1024
];
...
...
zlib/gzread.c
View file @
edd0b03e
...
...
@@ -157,11 +157,9 @@ local int gz_look(state)
the output buffer is larger than the input buffer, which also assures
space for gzungetc() */
state
->
x
.
next
=
state
->
out
;
if
(
strm
->
avail_in
)
{
memcpy
(
state
->
x
.
next
,
strm
->
next_in
,
strm
->
avail_in
);
state
->
x
.
have
=
strm
->
avail_in
;
strm
->
avail_in
=
0
;
}
state
->
how
=
COPY
;
state
->
direct
=
1
;
return
0
;
...
...
zlib/gzwrite.c
View file @
edd0b03e
...
...
@@ -474,7 +474,7 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...)
#else
/* !STDC && !Z_HAVE_STDARG_H */
/* -- see zlib.h -- */
int
ZEXPORTVA
gzprintf
(
file
,
format
,
a1
,
a2
,
a3
,
a4
,
a5
,
a6
,
a7
,
a8
,
a9
,
a10
,
int
ZEXPORTVA
gzprintf
(
file
,
format
,
a1
,
a2
,
a3
,
a4
,
a5
,
a6
,
a7
,
a8
,
a9
,
a10
,
a11
,
a12
,
a13
,
a14
,
a15
,
a16
,
a17
,
a18
,
a19
,
a20
)
gzFile
file
;
const
char
*
format
;
...
...
zlib/infback.c
View file @
edd0b03e
...
...
@@ -66,6 +66,7 @@ int stream_size;
state
->
window
=
window
;
state
->
wnext
=
0
;
state
->
whave
=
0
;
state
->
sane
=
1
;
return
Z_OK
;
}
...
...
@@ -605,25 +606,27 @@ void FAR *out_desc;
break
;
case
DONE
:
/* inflate stream terminated properly
-- write leftover output
*/
/* inflate stream terminated properly */
ret
=
Z_STREAM_END
;
if
(
left
<
state
->
wsize
)
{
if
(
out
(
out_desc
,
state
->
window
,
state
->
wsize
-
left
))
ret
=
Z_BUF_ERROR
;
}
goto
inf_leave
;
case
BAD
:
ret
=
Z_DATA_ERROR
;
goto
inf_leave
;
default:
/* can't happen, but makes compilers happy */
default:
/* can't happen, but makes compilers happy */
ret
=
Z_STREAM_ERROR
;
goto
inf_leave
;
}
/*
R
eturn unused input */
/*
Write leftover output and r
eturn unused input */
inf_leave:
if
(
left
<
state
->
wsize
)
{
if
(
out
(
out_desc
,
state
->
window
,
state
->
wsize
-
left
)
&&
ret
==
Z_STREAM_END
)
ret
=
Z_BUF_ERROR
;
}
strm
->
next_in
=
next
;
strm
->
avail_in
=
have
;
return
ret
;
...
...
zlib/inflate.c
View file @
edd0b03e
...
...
@@ -168,6 +168,8 @@ int windowBits;
/* extract wrap request from windowBits parameter */
if
(
windowBits
<
0
)
{
if
(
windowBits
<
-
15
)
return
Z_STREAM_ERROR
;
wrap
=
0
;
windowBits
=
-
windowBits
;
}
...
...
@@ -764,8 +766,9 @@ int flush;
if
(
copy
>
have
)
copy
=
have
;
if
(
copy
)
{
if
(
state
->
head
!=
Z_NULL
&&
state
->
head
->
extra
!=
Z_NULL
)
{
len
=
state
->
head
->
extra_len
-
state
->
length
;
state
->
head
->
extra
!=
Z_NULL
&&
(
len
=
state
->
head
->
extra_len
-
state
->
length
)
<
state
->
head
->
extra_max
)
{
zmemcpy
(
state
->
head
->
extra
+
len
,
next
,
len
+
copy
>
state
->
head
->
extra_max
?
state
->
head
->
extra_max
-
len
:
copy
);
...
...
zlib/inftrees.c
View file @
edd0b03e
...
...
@@ -9,7 +9,7 @@
#define MAXBITS 15
const
char
inflate_copyright
[]
=
" inflate 1.2.1
2
Copyright 1995-2022 Mark Adler "
;
" inflate 1.2.1
3
Copyright 1995-2022 Mark Adler "
;
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
...
...
@@ -62,7 +62,7 @@ unsigned short FAR *work;
35
,
43
,
51
,
59
,
67
,
83
,
99
,
115
,
131
,
163
,
195
,
227
,
258
,
0
,
0
};
static
const
unsigned
short
lext
[
31
]
=
{
/* Length codes 257..285 extra */
16
,
16
,
16
,
16
,
16
,
16
,
16
,
16
,
17
,
17
,
17
,
17
,
18
,
18
,
18
,
18
,
19
,
19
,
19
,
19
,
20
,
20
,
20
,
20
,
21
,
21
,
21
,
21
,
16
,
19
9
,
202
};
19
,
19
,
19
,
19
,
20
,
20
,
20
,
20
,
21
,
21
,
21
,
21
,
16
,
19
4
,
65
};
static
const
unsigned
short
dbase
[
32
]
=
{
/* Distance codes 0..29 base */
1
,
2
,
3
,
4
,
5
,
7
,
9
,
13
,
17
,
25
,
33
,
49
,
65
,
97
,
129
,
193
,
257
,
385
,
513
,
769
,
1025
,
1537
,
2049
,
3073
,
4097
,
6145
,
...
...
zlib/inftrees.h
View file @
edd0b03e
...
...
@@ -38,7 +38,7 @@ typedef struct {
/* Maximum size of the dynamic table. The maximum number of code structures is
1444, which is the sum of 852 for literal/length codes and 592 for distance
codes. These values were found by exhaustive searches using the program
examples/enough.c found in the zlib distrib
t
ution. The arguments to that
examples/enough.c found in the zlib distribution. The arguments to that
program are the number of symbols, the initial root table size, and the
maximum bit length of a code. "enough 286 9 15" for literal/length codes
returns returns 852, and "enough 30 6 15" for distance codes returns 592.
...
...
zlib/make_vms.com
View file @
edd0b03e
...
...
@@ -14,9 +14,9 @@ $! 0.02 20061008 Adapt to new Makefile.in
$! 0.03 20091224 Add support for large file check
$! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
$! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples
$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new ex
a
mples
$! subdir path, update module search in makefile.in
$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned
$! 0.07 20120115 Triggered by work done by Alexey Chupahin complet
e
ly redesigned
$! shared image creation
$! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared
$! image
...
...
zlib/qnx/package.qpg
View file @
edd0b03e
...
...
@@ -25,10 +25,10 @@
<QPG:Files>
<QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/>
<QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/>
<QPG:Add file="../libz.so.1.2.1
2
" install="/opt/lib/" user="root:bin" permission="644"/>
<QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.1
2
"/>
<QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.1
2
"/>
<QPG:Add file="../libz.so.1.2.1
2
" install="/opt/lib/" component="slib"/>
<QPG:Add file="../libz.so.1.2.1
3
" install="/opt/lib/" user="root:bin" permission="644"/>
<QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.1
3
"/>
<QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.1
3
"/>
<QPG:Add file="../libz.so.1.2.1
3
" install="/opt/lib/" component="slib"/>
</QPG:Files>
<QPG:PackageFilter>
...
...
@@ -63,7 +63,7 @@
</QPM:ProductDescription>
<QPM:ReleaseDescription>
<QPM:ReleaseVersion>1.2.1
2
</QPM:ReleaseVersion>
<QPM:ReleaseVersion>1.2.1
3
</QPM:ReleaseVersion>
<QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency>
<QPM:ReleaseStability>Stable</QPM:ReleaseStability>
<QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor>
...
...
zlib/treebuild.xml
View file @
edd0b03e
<?xml version="1.0" ?>
<package
name=
"zlib"
version=
"1.2.1
2
"
>
<library
name=
"zlib"
dlversion=
"1.2.1
2
"
dlname=
"z"
>
<package
name=
"zlib"
version=
"1.2.1
3
"
>
<library
name=
"zlib"
dlversion=
"1.2.1
3
"
dlname=
"z"
>
<property
name=
"description"
>
zip compression library
</property>
<property
name=
"include-target-dir"
value=
"$(@PACKAGE/install-includedir)"
/>
...
...
zlib/trees.c
View file @
edd0b03e
This diff is collapsed.
Click to expand it.
zlib/uncompr.c
View file @
edd0b03e
...
...
@@ -24,7 +24,7 @@
Z_DATA_ERROR if the input data was corrupted, including if the input data is
an incomplete zlib stream.
*/
int
ZEXPORT
uncompress2
(
dest
,
destLen
,
source
,
sourceLen
)
int
ZEXPORT
uncompress2
(
dest
,
destLen
,
source
,
sourceLen
)
Bytef
*
dest
;
uLongf
*
destLen
;
const
Bytef
*
source
;
...
...
@@ -83,7 +83,7 @@ int ZEXPORT uncompress2 (dest, destLen, source, sourceLen)
err
;
}
int
ZEXPORT
uncompress
(
dest
,
destLen
,
source
,
sourceLen
)
int
ZEXPORT
uncompress
(
dest
,
destLen
,
source
,
sourceLen
)
Bytef
*
dest
;
uLongf
*
destLen
;
const
Bytef
*
source
;
...
...
zlib/win32/README-WIN32.txt
View file @
edd0b03e
ZLIB DATA COMPRESSION LIBRARY
zlib 1.2.1
2
is a general purpose data compression library. All the code is
zlib 1.2.1
3
is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
...
...
@@ -22,7 +22,7 @@ before asking for help.
Manifest:
The package zlib-1.2.1
2
-win32-x86.zip will contain the following files:
The package zlib-1.2.1
3
-win32-x86.zip will contain the following files:
README-WIN32.txt This document
ChangeLog Changes since previous zlib packages
...
...
zlib/win32/zlib1.rc
View file @
edd0b03e
...
...
@@ -26,7 +26,7 @@ BEGIN
VALUE "FileDescription", "zlib data compression library\0"
VALUE "FileVersion", ZLIB_VERSION "\0"
VALUE "InternalName", "zlib1.dll\0"
VALUE "LegalCopyright", "(C) 1995-20
17
Jean-loup Gailly & Mark Adler\0"
VALUE "LegalCopyright", "(C) 1995-20
22
Jean-loup Gailly & Mark Adler\0"
VALUE "OriginalFilename", "zlib1.dll\0"
VALUE "ProductName", "zlib\0"
VALUE "ProductVersion", ZLIB_VERSION "\0"
...
...
zlib/zconf.h.cmakein
View file @
edd0b03e
...
...
@@ -40,6 +40,9 @@
# define crc32 z_crc32
# define crc32_combine z_crc32_combine
# define crc32_combine64 z_crc32_combine64
# define crc32_combine_gen z_crc32_combine_gen
# define crc32_combine_gen64 z_crc32_combine_gen64
# define crc32_combine_op z_crc32_combine_op
# define crc32_z z_crc32_z
# define deflate z_deflate
# define deflateBound z_deflateBound
...
...
@@ -351,6 +354,9 @@
# ifdef FAR
# undef FAR
# endif
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
# endif
# include <windows.h>
/* No need for _export, use ZLIB.DEF instead. */
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
...
...
@@ -469,11 +475,18 @@ typedef uLong FAR uLongf;
# undef _LARGEFILE64_SOURCE
#endif
#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
#ifndef Z_HAVE_UNISTD_H
# ifdef __WATCOMC__
# define Z_HAVE_UNISTD_H
# endif
#endif
#ifndef Z_HAVE_UNISTD_H
# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
# define Z_HAVE_UNISTD_H
# endif
#endif
#ifndef Z_SOLO
# if defined(Z_HAVE_UNISTD_H)
|| defined(_LARGEFILE64_SOURCE)
# if defined(Z_HAVE_UNISTD_H)
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
# ifdef VMS
# include <unixio.h> /* for off_t */
...
...
zlib/zconf.h.in
View file @
edd0b03e
...
...
@@ -38,6 +38,9 @@
# define crc32 z_crc32
# define crc32_combine z_crc32_combine
# define crc32_combine64 z_crc32_combine64
# define crc32_combine_gen z_crc32_combine_gen
# define crc32_combine_gen64 z_crc32_combine_gen64
# define crc32_combine_op z_crc32_combine_op
# define crc32_z z_crc32_z
# define deflate z_deflate
# define deflateBound z_deflateBound
...
...
@@ -349,6 +352,9 @@
# ifdef FAR
# undef FAR
# endif
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
# endif
# include <windows.h>
/* No need for _export, use ZLIB.DEF instead. */
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
...
...
@@ -467,11 +473,18 @@ typedef uLong FAR uLongf;
# undef _LARGEFILE64_SOURCE
#endif
#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
#ifndef Z_HAVE_UNISTD_H
# ifdef __WATCOMC__
# define Z_HAVE_UNISTD_H
# endif
#endif
#ifndef Z_HAVE_UNISTD_H
# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
# define Z_HAVE_UNISTD_H
# endif
#endif
#ifndef Z_SOLO
# if defined(Z_HAVE_UNISTD_H)
|| defined(_LARGEFILE64_SOURCE)
# if defined(Z_HAVE_UNISTD_H)
# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
# ifdef VMS
# include <unixio.h> /* for off_t */
...
...
zlib/zlib.3
View file @
edd0b03e
.TH ZLIB 3 "
27 Mar
2022"
.TH ZLIB 3 "
13 Oct
2022"
.SH NAME
zlib \- compression/decompression library
.SH SYNOPSIS
...
...
@@ -105,7 +105,7 @@ before asking for help.
Send questions and/or comments to zlib@gzip.org,
or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
.SH AUTHORS AND LICENSE
Version 1.2.1
2
Version 1.2.1
3
.LP
Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
.LP
...
...
zlib/zlib.h
View file @
edd0b03e
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.1
2, March 11
th, 2022
version 1.2.1
3, October 13
th, 2022
Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
...
...
@@ -37,11 +37,11 @@
extern
"C"
{
#endif
#define ZLIB_VERSION "1.2.1
2
"
#define ZLIB_VERNUM 0x12
c
0
#define ZLIB_VERSION "1.2.1
3
"
#define ZLIB_VERNUM 0x12
d
0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
#define ZLIB_VER_REVISION 1
2
#define ZLIB_VER_REVISION 1
3
#define ZLIB_VER_SUBREVISION 0
/*
...
...
@@ -276,7 +276,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
== 0), or after each call of deflate(). If deflate returns Z_OK and with
zero avail_out, it must be called again after making room in the output
buffer because there might be more output pending. See deflatePending(),
which can be used if desired to determine whether or not there is more ouput
which can be used if desired to determine whether or not there is more ou
t
put
in that case.
Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
...
...
@@ -660,7 +660,7 @@ ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm,
to dictionary. dictionary must have enough space, where 32768 bytes is
always enough. If deflateGetDictionary() is called with dictionary equal to
Z_NULL, then only the dictionary length is returned, and nothing is copied.
Similary, if dictLength is Z_NULL, then it is not set.
Similar
l
y, if dictLength is Z_NULL, then it is not set.
deflateGetDictionary() may return a length less than the window size, even
when more than the window size in input has been provided. It may return up
...
...
@@ -915,7 +915,7 @@ ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
to dictionary. dictionary must have enough space, where 32768 bytes is
always enough. If inflateGetDictionary() is called with dictionary equal to
Z_NULL, then only the dictionary length is returned, and nothing is copied.
Similary, if dictLength is Z_NULL, then it is not set.
Similar
l
y, if dictLength is Z_NULL, then it is not set.
inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
stream state is inconsistent.
...
...
@@ -1437,7 +1437,7 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
In the event that the end of file is reached and only a partial item is
available at the end, i.e. the remaining uncompressed data length is not a
multiple of size, then the final partial item is nevetheless read into buf
multiple of size, then the final partial item is neve
r
theless read into buf
and the end-of-file flag is set. The length of the partial item read is not
provided, but could be inferred from the result of gztell(). This behavior
is the same as the behavior of fread() implementations in common libraries,
...
...
@@ -1913,7 +1913,7 @@ ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
ZEXTERN
const
z_crc_t
FAR
*
ZEXPORT
get_crc_table
OF
((
void
));
ZEXTERN
int
ZEXPORT
inflateUndermine
OF
((
z_streamp
,
int
));
ZEXTERN
int
ZEXPORT
inflateValidate
OF
((
z_streamp
,
int
));
ZEXTERN
unsigned
long
ZEXPORT
inflateCodesUsed
OF
((
z_streamp
));
ZEXTERN
unsigned
long
ZEXPORT
inflateCodesUsed
OF
((
z_streamp
));
ZEXTERN
int
ZEXPORT
inflateResetKeep
OF
((
z_streamp
));
ZEXTERN
int
ZEXPORT
deflateResetKeep
OF
((
z_streamp
));
#if defined(_WIN32) && !defined(Z_SOLO)
...
...
zlib/zlib2ansi
View file @
edd0b03e
...
...
@@ -8,7 +8,7 @@
# TODO
#
# Asumes no function pointer parameters. unless they are typedefed.
# As
s
umes no function pointer parameters. unless they are typedefed.
# Assumes no literal strings that look like function definitions
# Assumes functions start at the beginning of a line
...
...
@@ -104,7 +104,7 @@ sub StripComments
no
warnings
;
# Strip C & C++ coments
# Strip C & C++ com
m
ents
# From the perlfaq
$_
[
0
]
=~
...
...
zlib/zutil.c
View file @
edd0b03e
...
...
@@ -61,9 +61,11 @@ uLong ZEXPORT zlibCompileFlags()
#ifdef ZLIB_DEBUG
flags
+=
1
<<
8
;
#endif
/*
#if defined(ASMV) || defined(ASMINF)
flags += 1 << 9;
#endif
*/
#ifdef ZLIB_WINAPI
flags
+=
1
<<
10
;
#endif
...
...
@@ -119,7 +121,7 @@ uLong ZEXPORT zlibCompileFlags()
# endif
int
ZLIB_INTERNAL
z_verbose
=
verbose
;
void
ZLIB_INTERNAL
z_error
(
m
)
void
ZLIB_INTERNAL
z_error
(
m
)
char
*
m
;
{
fprintf
(
stderr
,
"%s
\n
"
,
m
);
...
...
@@ -214,7 +216,7 @@ local ptr_table table[MAX_PTR];
* a protected system like OS/2. Use Microsoft C instead.
*/
voidpf
ZLIB_INTERNAL
zcalloc
(
voidpf
opaque
,
unsigned
items
,
unsigned
size
)
voidpf
ZLIB_INTERNAL
zcalloc
(
voidpf
opaque
,
unsigned
items
,
unsigned
size
)
{
voidpf
buf
;
ulg
bsize
=
(
ulg
)
items
*
size
;
...
...
@@ -240,7 +242,7 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
return
buf
;
}
void
ZLIB_INTERNAL
zcfree
(
voidpf
opaque
,
voidpf
ptr
)
void
ZLIB_INTERNAL
zcfree
(
voidpf
opaque
,
voidpf
ptr
)
{
int
n
;
...
...
@@ -277,13 +279,13 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
# define _hfree hfree
#endif
voidpf
ZLIB_INTERNAL
zcalloc
(
voidpf
opaque
,
uInt
items
,
uInt
size
)
voidpf
ZLIB_INTERNAL
zcalloc
(
voidpf
opaque
,
uInt
items
,
uInt
size
)
{
(
void
)
opaque
;
return
_halloc
((
long
)
items
,
size
);
}
void
ZLIB_INTERNAL
zcfree
(
voidpf
opaque
,
voidpf
ptr
)
void
ZLIB_INTERNAL
zcfree
(
voidpf
opaque
,
voidpf
ptr
)
{
(
void
)
opaque
;
_hfree
(
ptr
);
...
...
@@ -302,7 +304,7 @@ extern voidp calloc OF((uInt items, uInt size));
extern
void
free
OF
((
voidpf
ptr
));
#endif
voidpf
ZLIB_INTERNAL
zcalloc
(
opaque
,
items
,
size
)
voidpf
ZLIB_INTERNAL
zcalloc
(
opaque
,
items
,
size
)
voidpf
opaque
;
unsigned
items
;
unsigned
size
;
...
...
@@ -312,7 +314,7 @@ voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
(
voidpf
)
calloc
(
items
,
size
);
}
void
ZLIB_INTERNAL
zcfree
(
opaque
,
ptr
)
void
ZLIB_INTERNAL
zcfree
(
opaque
,
ptr
)
voidpf
opaque
;
voidpf
ptr
;
{
...
...
zlib/zutil.h
View file @
edd0b03e
...
...
@@ -193,6 +193,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
(!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
ZEXTERN
uLong
ZEXPORT
adler32_combine64
OF
((
uLong
,
uLong
,
z_off_t
));
ZEXTERN
uLong
ZEXPORT
crc32_combine64
OF
((
uLong
,
uLong
,
z_off_t
));
ZEXTERN
uLong
ZEXPORT
crc32_combine_gen64
OF
((
z_off_t
));
#endif
/* common defaults */
...
...
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