Restore old CopyMem as CopyMemC
CopyMemC cos CONST Src Reverts 6b9dae0bef0fab82230a6672eaadd38d739e3e1e Signed-off-by: Callum Farmer <gmbr3@opensuse.org>
This commit is contained in:
parent
52c3c36e34
commit
c339e077c8
@ -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,
|
||||
|
@ -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 (
|
||||
|
10
lib/misc.c
10
lib/misc.c
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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';
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user