X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdePkg%2FLibrary%2FUefiMemoryLib%2FCopyMemWrapper.c;h=21ea2d4ef47859ae0f6f7fdd108f10df9a66ba38;hb=00dbccf2d5121545a89d88b04b408ebbb75aad0f;hp=5ca62f50478428426398688c405bb399231eaa7b;hpb=24de7645e857287d096b058f7a64fb7f618c0194;p=mirror_edk2.git diff --git a/MdePkg/Library/UefiMemoryLib/CopyMemWrapper.c b/MdePkg/Library/UefiMemoryLib/CopyMemWrapper.c index 5ca62f5047..21ea2d4ef4 100644 --- a/MdePkg/Library/UefiMemoryLib/CopyMemWrapper.c +++ b/MdePkg/Library/UefiMemoryLib/CopyMemWrapper.c @@ -1,66 +1,63 @@ /** @file CopyMem() implementation. - Copyright (c) 2006, Intel Corporation
- All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - Module Name: CopyMemWrapper.c - - The following BaseMemoryLib instances share the same version of this file: - + The following BaseMemoryLib instances contain the same copy of this file: + BaseMemoryLib BaseMemoryLibMmx BaseMemoryLibSse2 BaseMemoryLibRepStr + BaseMemoryLibOptDxe + BaseMemoryLibOptPei PeiMemoryLib UefiMemoryLib + Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + **/ #include "MemLibInternals.h" /** - Copy Length bytes from Source to Destination. - - This function copies Length bytes from SourceBuffer to DestinationBuffer, and - returns DestinationBuffer. The implementation must be reentrant, and it must - handle the case where SourceBuffer overlaps DestinationBuffer. + Copies a source buffer to a destination buffer, and returns the destination buffer. - If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then - ASSERT(). + This function copies Length bytes from SourceBuffer to DestinationBuffer, and returns + DestinationBuffer. The implementation must be reentrant, and it must handle the case + where SourceBuffer overlaps DestinationBuffer. + + If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT(). If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT(). - @param Destination Target of copy - @param Source Place to copy from - @param Length Number of bytes to copy + @param DestinationBuffer The pointer to the destination buffer of the memory copy. + @param SourceBuffer The pointer to the source buffer of the memory copy. + @param Length The number of bytes to copy from SourceBuffer to DestinationBuffer. - @return Destination + @return DestinationBuffer. **/ VOID * EFIAPI CopyMem ( - OUT VOID *Destination, - IN CONST VOID *Source, - IN UINTN Length + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length ) { - ASSERT ( - Destination == NULL || - Length <= MAX_ADDRESS - (UINTN)Destination + 1 - ); - ASSERT ( - Source == NULL || - Length <= MAX_ADDRESS - (UINTN)Source + 1 - ); - if (Destination == Source || Length == 0) { - return Destination; + if (Length == 0) { + return DestinationBuffer; + } + ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)DestinationBuffer)); + ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)SourceBuffer)); + + if (DestinationBuffer == SourceBuffer) { + return DestinationBuffer; } - return InternalMemCopyMem (Destination, Source, Length); + return InternalMemCopyMem (DestinationBuffer, SourceBuffer, Length); }