Fix the Linker testcase regressions, by making MemoryBuffer::getFileOrSTDIN return

a valid but empty buffer if stdin is empty.

llvm-svn: 44219
This commit is contained in:
Chris Lattner 2007-11-18 18:52:28 +00:00
parent b01e500f16
commit 44158478bb
2 changed files with 21 additions and 6 deletions

View File

@ -88,14 +88,11 @@ public:
/// getFileOrSTDIN - Open the specified file as a MemoryBuffer, or open stdin
/// if the Filename is "-". If an error occurs, this returns null and fills
/// in *ErrStr with a reason.
/// in *ErrStr with a reason. If stdin is empty, this API (unlike getSTDIN)
/// returns an empty buffer.
static MemoryBuffer *getFileOrSTDIN(const char *FilenameStart,unsigned FnSize,
std::string *ErrStr = 0,
int64_t FileSize = -1) {
if (FnSize == 1 && FilenameStart[0] == '-')
return getSTDIN();
return getFile(FilenameStart, FnSize, ErrStr, FileSize);
}
int64_t FileSize = -1);
/// getFileOrSTDIN - Open the specified file as a MemoryBuffer, or open stdin
/// if the Filename is "-". If an error occurs, this returns null and fills

View File

@ -117,6 +117,24 @@ MemoryBuffer *MemoryBuffer::getNewMemBuffer(unsigned Size,
}
/// getFileOrSTDIN - Open the specified file as a MemoryBuffer, or open stdin
/// if the Filename is "-". If an error occurs, this returns null and fills
/// in *ErrStr with a reason. If stdin is empty, this API (unlike getSTDIN)
/// returns an empty buffer.
MemoryBuffer *MemoryBuffer::getFileOrSTDIN(const char *FilenameStart,
unsigned FnSize,
std::string *ErrStr,
int64_t FileSize) {
if (FnSize != 1 || FilenameStart[0] != '-')
return getFile(FilenameStart, FnSize, ErrStr, FileSize);
MemoryBuffer *M = getSTDIN();
if (M) return M;
// If stdin was empty, M is null. Cons up an empty memory buffer now.
const char *EmptyStr = "";
return MemoryBuffer::getMemBuffer(EmptyStr, EmptyStr, "<stdin>");
}
//===----------------------------------------------------------------------===//
// MemoryBufferMMapFile implementation.
//===----------------------------------------------------------------------===//