mirror of
https://github.com/postgres/postgres.git
synced 2026-03-27 04:44:15 -04:00
aio: Improve assertions related to io_method
First, the assertions in assign_io_method() were the wrong way round. Second, the lengthof() assertion checked the length of io_method_options, which is the wrong array to check and is always longer than pgaio_method_ops_table. While add it, add a static assert to ensure pgaio_method_ops_table and io_method_options stay in sync. Per coverity and Tom Lane. Reported-by: Tom Lane <tgl@sss.pgh.pa.us> Backpatch-through: 18
This commit is contained in:
parent
2d83d729d5
commit
dae00f333b
1 changed files with 4 additions and 1 deletions
|
|
@ -89,6 +89,9 @@ static const IoMethodOps *const pgaio_method_ops_table[] = {
|
|||
#endif
|
||||
};
|
||||
|
||||
StaticAssertDecl(lengthof(io_method_options) == lengthof(pgaio_method_ops_table) + 1,
|
||||
"io_method_options out of sync with pgaio_method_ops_table");
|
||||
|
||||
/* callbacks for the configured io_method, set by assign_io_method */
|
||||
const IoMethodOps *pgaio_method_ops;
|
||||
|
||||
|
|
@ -1318,8 +1321,8 @@ pgaio_shutdown(int code, Datum arg)
|
|||
void
|
||||
assign_io_method(int newval, void *extra)
|
||||
{
|
||||
Assert(newval < lengthof(pgaio_method_ops_table));
|
||||
Assert(pgaio_method_ops_table[newval] != NULL);
|
||||
Assert(newval < lengthof(io_method_options));
|
||||
|
||||
pgaio_method_ops = pgaio_method_ops_table[newval];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue