mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
- More LockBuffers fixes
- Now attempting to sync the clock with a network time server doesn't cause an access violation svn path=/trunk/; revision=40263
This commit is contained in:
parent
4e466b6892
commit
fc6b65aac3
1 changed files with 11 additions and 8 deletions
|
@ -69,7 +69,7 @@ PAFD_WSABUF LockBuffers( PAFD_WSABUF Buf, UINT Count,
|
||||||
BOOLEAN Write, BOOLEAN LockAddress ) {
|
BOOLEAN Write, BOOLEAN LockAddress ) {
|
||||||
UINT i;
|
UINT i;
|
||||||
/* Copy the buffer array so we don't lose it */
|
/* Copy the buffer array so we don't lose it */
|
||||||
UINT Lock = (LockAddress && AddressLen) ? 2 : 0;
|
UINT Lock = LockAddress ? 2 : 0;
|
||||||
UINT Size = sizeof(AFD_WSABUF) * (Count + Lock);
|
UINT Size = sizeof(AFD_WSABUF) * (Count + Lock);
|
||||||
PAFD_WSABUF NewBuf = ExAllocatePool( PagedPool, Size * 2 );
|
PAFD_WSABUF NewBuf = ExAllocatePool( PagedPool, Size * 2 );
|
||||||
BOOLEAN LockFailed = FALSE;
|
BOOLEAN LockFailed = FALSE;
|
||||||
|
@ -77,17 +77,20 @@ PAFD_WSABUF LockBuffers( PAFD_WSABUF Buf, UINT Count,
|
||||||
AFD_DbgPrint(MID_TRACE,("Called(%08x)\n", NewBuf));
|
AFD_DbgPrint(MID_TRACE,("Called(%08x)\n", NewBuf));
|
||||||
|
|
||||||
if( NewBuf ) {
|
if( NewBuf ) {
|
||||||
|
RtlZeroMemory(NewBuf, Size * 2);
|
||||||
|
|
||||||
PAFD_MAPBUF MapBuf = (PAFD_MAPBUF)(NewBuf + Count + Lock);
|
PAFD_MAPBUF MapBuf = (PAFD_MAPBUF)(NewBuf + Count + Lock);
|
||||||
|
|
||||||
_SEH2_TRY {
|
_SEH2_TRY {
|
||||||
RtlCopyMemory( NewBuf, Buf, sizeof(AFD_WSABUF) * Count );
|
RtlCopyMemory( NewBuf, Buf, sizeof(AFD_WSABUF) * Count );
|
||||||
if( Lock != 0 ) {
|
if( LockAddress ) {
|
||||||
NewBuf[Count].buf = AddressBuf;
|
if (AddressBuf && AddressLen) {
|
||||||
NewBuf[Count].len = *AddressLen;
|
NewBuf[Count].buf = AddressBuf;
|
||||||
Count++;
|
NewBuf[Count].len = *AddressLen;
|
||||||
NewBuf[Count].buf = (PVOID)AddressLen;
|
NewBuf[Count + 1].buf = (PVOID)AddressLen;
|
||||||
NewBuf[Count].len = sizeof(*AddressLen);
|
NewBuf[Count + 1].len = sizeof(*AddressLen);
|
||||||
Count++;
|
}
|
||||||
|
Count += 2;
|
||||||
}
|
}
|
||||||
} _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
|
} _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
|
||||||
AFD_DbgPrint(MIN_TRACE,("Access violation copying buffer info "
|
AFD_DbgPrint(MIN_TRACE,("Access violation copying buffer info "
|
||||||
|
|
Loading…
Reference in a new issue