Restore old CopyMem as CopyMemC

CopyMemC cos CONST Src

Reverts 6b9dae0bef

Signed-off-by: Callum Farmer <gmbr3@opensuse.org>
This commit is contained in:
Callum Farmer 2024-05-02 15:52:11 +01:00
parent 52c3c36e34
commit c339e077c8
No known key found for this signature in database
GPG Key ID: 9A5B19E18CD0013C
6 changed files with 54 additions and 12 deletions

View File

@ -303,6 +303,13 @@ CopyMem (
IN UINTN len
);
VOID EFIAPI
CopyMemC (
IN VOID *Dest,
IN CONST VOID *Src,
IN UINTN len
);
INTN
CompareMem (
IN CONST VOID *Dest,

View File

@ -62,6 +62,15 @@ RtCopyMem (
IN UINTN len
);
VOID
EFIAPI
RUNTIMEFUNCTION
RtCopyMemC (
IN VOID *Dest,
IN CONST VOID *Src,
IN UINTN len
);
INTN
RUNTIMEFUNCTION
RtCompareMem (

View File

@ -118,6 +118,16 @@ CopyMem (
RtCopyMem (Dest, Src, len);
}
VOID EFIAPI
CopyMemC (
IN VOID *Dest,
IN CONST VOID *Src,
IN UINTN len
)
{
RtCopyMemC (Dest, Src, len);
}
INTN
CompareMem (
IN CONST VOID *Dest,

View File

@ -88,6 +88,30 @@ RtCopyMem (
}
}
#ifndef __GNUC__
#pragma RUNTIME_CODE(RtCopyMemC)
#endif
VOID
EFIAPI
RUNTIMEFUNCTION
RtCopyMemC (
IN VOID *Dest,
IN CONST VOID *Src,
IN UINTN len
)
{
CHAR8 *d = (CHAR8*)Dest;
CONST CHAR8 *s = (CONST CHAR8*)Src;
if (d == NULL || s == NULL || s == d)
return;
/* CONST Src: UB if Src and Dest overlap */
while (len--)
*d++ = *s++;
}
#ifndef __GNUC__
#pragma RUNTIME_CODE(RtCompareMem)
#endif

View File

@ -69,13 +69,11 @@ RtStrnCpy (
)
// copy strings
{
CHAR16 CopySrc = *Src;
CHAR16 *PCopySrc = &CopySrc;
UINTN Size = RtStrnLen(Src, Len);
if (Size != Len)
RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
RtCopyMem(Dest, PCopySrc, Size * sizeof(CHAR16));
RtCopyMemC(Dest, Src, Size * sizeof(CHAR16));
}
#ifndef __GNUC__
@ -108,13 +106,11 @@ RtStpnCpy (
)
// copy strings
{
CHAR16 CopySrc = *Src;
CHAR16 *PCopySrc = &CopySrc;
UINTN Size = RtStrnLen(Src, Len);
if (Size != Len)
RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
RtCopyMem(Dest, PCopySrc, Size * sizeof(CHAR16));
RtCopyMemC(Dest, Src, Size * sizeof(CHAR16));
return Dest + Size;
}
@ -143,12 +139,10 @@ RtStrnCat (
)
{
UINTN DestSize, Size;
CHAR16 CopySrc = *Src;
CHAR16 *PCopySrc = &CopySrc;
DestSize = RtStrLen(Dest);
Size = RtStrnLen(Src, Len);
RtCopyMem(Dest + DestSize, PCopySrc, Size * sizeof(CHAR16));
RtCopyMemC(Dest + DestSize, Src, Size * sizeof(CHAR16));
Dest[DestSize + Size] = '\0';
}

View File

@ -201,13 +201,11 @@ StrDuplicate (
{
CHAR16 *Dest;
UINTN Size;
CHAR16 CopySrc = *Src;
CHAR16 *PCopySrc = &CopySrc;
Size = StrSize(Src);
Dest = AllocatePool (Size);
if (Dest) {
CopyMem (Dest, PCopySrc, Size);
CopyMemC (Dest, Src, Size);
}
return Dest;
}