[llvm-commits] [llvm] r120571 - /llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp
Che-Liang Chiou
clchiou at gmail.com
Wed Dec 1 03:45:53 PST 2010
Author: clchiou
Date: Wed Dec 1 05:45:53 2010
New Revision: 120571
URL: http://llvm.org/viewvc/llvm-project?rev=120571&view=rev
Log:
ptx: bug fix: use after free
Modified:
llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp
Modified: llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp?rev=120571&r1=120570&r2=120571&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp Wed Dec 1 05:45:53 2010
@@ -130,20 +130,21 @@
}
void PTXAsmPrinter::EmitInstruction(const MachineInstr *MI) {
- SmallString<128> sstr;
- raw_svector_ostream OS(sstr);
+ std::string str;
+ str.reserve(64);
+
+ // Write instruction to str
+ raw_string_ostream OS(str);
printInstruction(MI, OS);
OS << ';';
+ OS.flush();
// Replace "%type" if found
- StringRef strref = OS.str();
size_t pos;
- if ((pos = strref.find("%type")) != StringRef::npos) {
- std::string str = strref;
+ if ((pos = str.find("%type")) != std::string::npos)
str.replace(pos, /*strlen("%type")==*/5, getInstructionTypeName(MI));
- strref = StringRef(str);
- }
+ StringRef strref = StringRef(str);
OutStreamer.EmitRawText(strref);
}
More information about the llvm-commits
mailing list