Skip to content

Commit 40ed86e

Browse files
authored
Merge pull request swiftlang#83185 from augusto2112/opt-resolve-addr
[NFC] Stack allocate buffer in readRemoteAddressImpl instead of malloc
2 parents 3c0d09f + 95abf09 commit 40ed86e

File tree

1 file changed

+15
-20
lines changed

1 file changed

+15
-20
lines changed

include/swift/Remote/MemoryReader.h

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -349,26 +349,21 @@ class MemoryReader {
349349
std::size_t integerSize) {
350350
assert((integerSize == 4 || integerSize == 8) &&
351351
"Only 32 or 64 bit architectures are supported!");
352-
auto Buf = std::malloc(integerSize);
353-
if (!Buf)
354-
return false;
355-
356-
// Free Buf when this function return.
357-
ReadBytesResult Result(
358-
Buf, [](const void *ptr) { free(const_cast<void *>(ptr)); });
359-
if (!readBytes(address, reinterpret_cast<uint8_t *>(Buf), integerSize))
360-
return false;
361-
362-
if (integerSize == 4)
363-
out = RemoteAddress(*reinterpret_cast<uint32_t *>(Buf),
364-
address.getAddressSpace());
365-
else if (integerSize == 8)
366-
out = RemoteAddress(*reinterpret_cast<uint64_t *>(Buf),
367-
address.getAddressSpace());
368-
else
369-
return false;
370-
371-
return true;
352+
if (integerSize == 4) {
353+
uint32_t buf;
354+
if (!readBytes(address, reinterpret_cast<uint8_t *>(&buf), integerSize))
355+
return false;
356+
out = RemoteAddress(buf, address.getAddressSpace());
357+
return true;
358+
}
359+
if (integerSize == 8) {
360+
uint64_t buf;
361+
if (!readBytes(address, reinterpret_cast<uint8_t *>(&buf), integerSize))
362+
return false;
363+
out = RemoteAddress(buf, address.getAddressSpace());
364+
return true;
365+
}
366+
return false;
372367
}
373368
};
374369

0 commit comments

Comments
 (0)