Don't crash on failed Shm mapping
This commit is contained in:
parent
a13b8617dc
commit
ccb2507ac3
|
|
@ -101,7 +101,19 @@ static BAN::ErrorOr<void> extension_shm(Client& client_info, BAN::ConstByteSpan
|
||||||
dprintln(" readOnly: {}", request.readOnly);
|
dprintln(" readOnly: {}", request.readOnly);
|
||||||
|
|
||||||
void* addr = shmat(request.shmid, nullptr, request.readOnly ? SHM_RDONLY : 0);
|
void* addr = shmat(request.shmid, nullptr, request.readOnly ? SHM_RDONLY : 0);
|
||||||
ASSERT(addr != (void*)-1);
|
if (addr == (void*)-1)
|
||||||
|
{
|
||||||
|
xError error {
|
||||||
|
.type = X_Error,
|
||||||
|
.errorCode = static_cast<BYTE>(s_shm_error_base + BadShmSeg),
|
||||||
|
.sequenceNumber = client_info.sequence,
|
||||||
|
.resourceID = request.shmseg,
|
||||||
|
.minorCode = op_minor,
|
||||||
|
.majorCode = op_major,
|
||||||
|
};
|
||||||
|
TRY(encode(client_info.output_buffer, error));
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
TRY(client_info.objects.insert(request.shmseg));
|
TRY(client_info.objects.insert(request.shmseg));
|
||||||
TRY(g_objects.insert(
|
TRY(g_objects.insert(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue