MDEV-16264: Eliminate unsafe os_aio_userdata_t type cast
This commit is contained in:
parent
8be3794b42
commit
c7920fa8ff
@ -1350,6 +1350,12 @@ struct os_aio_userdata_t
|
||||
fil_node_t* node;
|
||||
IORequest type;
|
||||
void* message;
|
||||
|
||||
os_aio_userdata_t(fil_node_t*node, IORequest type, void*message) :
|
||||
node(node), type(type), message(message) {}
|
||||
|
||||
/** Construct from tpool::aiocb::m_userdata[] */
|
||||
os_aio_userdata_t(const char *buf) { memcpy((void*)this, buf, sizeof*this); }
|
||||
};
|
||||
/**
|
||||
NOTE! Use the corresponding macro os_aio(), not directly this function!
|
||||
|
@ -3883,7 +3883,7 @@ extern void fil_aio_callback(os_aio_userdata_t *data);
|
||||
static void io_callback(tpool::aiocb* cb)
|
||||
{
|
||||
ut_a(cb->m_err == DB_SUCCESS);
|
||||
os_aio_userdata_t data = *(os_aio_userdata_t*)cb->m_userdata;
|
||||
os_aio_userdata_t data(cb->m_userdata);
|
||||
/* Return cb back to cache*/
|
||||
if (cb->m_opcode == tpool::aio_opcode::AIO_PREAD) {
|
||||
if (read_slots->contains(cb)) {
|
||||
|
@ -137,7 +137,7 @@ struct aiocb
|
||||
int m_err;
|
||||
void *m_internal;
|
||||
task m_internal_task;
|
||||
char m_userdata[MAX_AIO_USERDATA_LEN];
|
||||
alignas(8) char m_userdata[MAX_AIO_USERDATA_LEN];
|
||||
|
||||
aiocb() : m_internal_task(nullptr, nullptr)
|
||||
{}
|
||||
|
Loading…
x
Reference in New Issue
Block a user