X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=KernelLand%2FKernel%2Fdrvutil_video.c;fp=KernelLand%2FKernel%2Fdrvutil_video.c;h=2bffb1ae92f0b932eccaf4bda790c02964c55db3;hb=845b6f9d90bb87b5e760e4d49aa93b0e003ab750;hp=4343ab6f181f51dc77e37375b3822651c0224bde;hpb=67a7fe2bb79eceaf10c572a99bd8345c4e81cf5b;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/drvutil_video.c b/KernelLand/Kernel/drvutil_video.c index 4343ab6f..2bffb1ae 100644 --- a/KernelLand/Kernel/drvutil_video.c +++ b/KernelLand/Kernel/drvutil_video.c @@ -536,8 +536,6 @@ void DrvUtil_Video_RenderCursor(tDrvUtil_Video_BufInfo *Buf) void DrvUtil_Video_RemoveCursor(tDrvUtil_Video_BufInfo *Buf) { int bytes_per_px = (Buf->Depth + 7) / 8; - int y, save_pitch; - Uint8 *dest, *src; // Just a little sanity if( !Buf->CursorBitmap || Buf->CursorX == -1 ) return ; @@ -546,16 +544,21 @@ void DrvUtil_Video_RemoveCursor(tDrvUtil_Video_BufInfo *Buf) // Debug("DrvUtil_Video_RemoveCursor: (Buf=%p) dest_x=%i, dest_y=%i", Buf, Buf->CursorDestX, Buf->CursorDestY); // Set up - save_pitch = Buf->CursorBitmap->W * bytes_per_px; - dest = (Uint8*)Buf->Framebuffer + Buf->CursorDestY * Buf->Pitch + Buf->CursorDestX*bytes_per_px; - src = Buf->CursorSaveBuf; - + size_t save_pitch = Buf->CursorBitmap->W * bytes_per_px; + Uint8 *dst = (Uint8*)Buf->Framebuffer + Buf->CursorDestY * Buf->Pitch + Buf->CursorDestX*bytes_per_px; + const Uint8 *src = Buf->CursorSaveBuf; + + ASSERT(Buf->Framebuffer); + ASSERT(src); + ASSERT(CheckMem(dst, Buf->CursorRenderH*Buf->Pitch)); + ASSERT(CheckMem(src, Buf->CursorRenderH*save_pitch)); + // Copy each line back - for( y = 0; y < Buf->CursorRenderH; y ++ ) + for( int y = 0; y < Buf->CursorRenderH; y ++ ) { - memcpy( dest, src, Buf->CursorRenderW * bytes_per_px ); + memcpy( dst, src, Buf->CursorRenderW * bytes_per_px ); src += save_pitch; - dest += Buf->Pitch; + dst += Buf->Pitch; } // Set the cursor as removed