Skip to content

Commit bfaaec4

Browse files
authored
Merge pull request #6 from gmbr3/RuntimeError
Align RTLIB CopyMem/SetMem with normal versions
2 parents 145c056 + 6b9dae0 commit bfaaec4

File tree

4 files changed

+20
-6
lines changed

4 files changed

+20
-6
lines changed

inc/efirtlib.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ RtZeroMem (
4545
);
4646

4747
VOID
48+
EFIAPI
4849
RUNTIMEFUNCTION
4950
RtSetMem (
5051
IN VOID *Buffer,
@@ -53,10 +54,11 @@ RtSetMem (
5354
);
5455

5556
VOID
57+
EFIAPI
5658
RUNTIMEFUNCTION
5759
RtCopyMem (
5860
IN VOID *Dest,
59-
IN CONST VOID *Src,
61+
IN VOID *Src,
6062
IN UINTN len
6163
);
6264

lib/runtime/efirtlib.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ RtZeroMem (
4242
#pragma RUNTIME_CODE(RtSetMem)
4343
#endif
4444
VOID
45+
EFIAPI
4546
RUNTIMEFUNCTION
4647
RtSetMem (
4748
IN VOID *Buffer,
@@ -61,10 +62,11 @@ RtSetMem (
6162
#pragma RUNTIME_CODE(RtCopyMem)
6263
#endif
6364
VOID
65+
EFIAPI
6466
RUNTIMEFUNCTION
6567
RtCopyMem (
6668
IN VOID *Dest,
67-
IN CONST VOID *Src,
69+
IN VOID *Src,
6870
IN UINTN len
6971
)
7072
{

lib/runtime/rtstr.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,13 @@ RtStrnCpy (
6969
)
7070
// copy strings
7171
{
72+
CHAR16 CopySrc = *Src;
73+
CHAR16 *PCopySrc = &CopySrc;
74+
7275
UINTN Size = RtStrnLen(Src, Len);
7376
if (Size != Len)
7477
RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
75-
RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
78+
RtCopyMem(Dest, PCopySrc, Size * sizeof(CHAR16));
7679
}
7780

7881
#ifndef __GNUC__
@@ -105,10 +108,13 @@ RtStpnCpy (
105108
)
106109
// copy strings
107110
{
111+
CHAR16 CopySrc = *Src;
112+
CHAR16 *PCopySrc = &CopySrc;
113+
108114
UINTN Size = RtStrnLen(Src, Len);
109115
if (Size != Len)
110116
RtSetMem(Dest + Size, (Len - Size) * sizeof(CHAR16), '\0');
111-
RtCopyMem(Dest, Src, Size * sizeof(CHAR16));
117+
RtCopyMem(Dest, PCopySrc, Size * sizeof(CHAR16));
112118
return Dest + Size;
113119
}
114120

@@ -137,10 +143,12 @@ RtStrnCat (
137143
)
138144
{
139145
UINTN DestSize, Size;
146+
CHAR16 CopySrc = *Src;
147+
CHAR16 *PCopySrc = &CopySrc;
140148

141149
DestSize = RtStrLen(Dest);
142150
Size = RtStrnLen(Src, Len);
143-
RtCopyMem(Dest + DestSize, Src, Size * sizeof(CHAR16));
151+
RtCopyMem(Dest + DestSize, PCopySrc, Size * sizeof(CHAR16));
144152
Dest[DestSize + Size] = '\0';
145153
}
146154

lib/str.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,13 @@ StrDuplicate (
201201
{
202202
CHAR16 *Dest;
203203
UINTN Size;
204+
CHAR16 CopySrc = *Src;
205+
CHAR16 *PCopySrc = &CopySrc;
204206

205207
Size = StrSize(Src);
206208
Dest = AllocatePool (Size);
207209
if (Dest) {
208-
CopyMem (Dest, (void *)Src, Size);
210+
CopyMem (Dest, PCopySrc, Size);
209211
}
210212
return Dest;
211213
}

0 commit comments

Comments
 (0)