[llvm-commits] CVS: llvm/lib/VMCore/Constants.cpp
Evan Cheng
evan.cheng at apple.com
Fri Mar 10 15:52:17 PST 2006
Changes in directory llvm/lib/VMCore:
Constants.cpp updated: 1.146 -> 1.147
---
Log message:
Added a parameter to control whether Constant::getStringValue() would chop
off the result string at the first null terminator.
---
Diffs of the changes: (+8 -4)
Constants.cpp | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
Index: llvm/lib/VMCore/Constants.cpp
diff -u llvm/lib/VMCore/Constants.cpp:1.146 llvm/lib/VMCore/Constants.cpp:1.147
--- llvm/lib/VMCore/Constants.cpp:1.146 Wed Mar 8 12:11:07 2006
+++ llvm/lib/VMCore/Constants.cpp Fri Mar 10 17:52:03 2006
@@ -1715,8 +1715,10 @@
/// getStringValue - Turn an LLVM constant pointer that eventually points to a
/// global into a string value. Return an empty string if we can't do it.
+/// Parameter Chop determines if the result is chopped at the first null
+/// terminator.
///
-std::string Constant::getStringValue(unsigned Offset) {
+std::string Constant::getStringValue(bool Chop, unsigned Offset) {
if (GlobalVariable *GV = dyn_cast<GlobalVariable>(this)) {
if (GV->hasInitializer() && isa<ConstantArray>(GV->getInitializer())) {
ConstantArray *Init = cast<ConstantArray>(GV->getInitializer());
@@ -1727,9 +1729,11 @@
Result.erase(Result.begin(), Result.begin()+Offset);
// Take off the null terminator, and any string fragments after it.
- std::string::size_type NullPos = Result.find_first_of((char)0);
- if (NullPos != std::string::npos)
- Result.erase(Result.begin()+NullPos, Result.end());
+ if (Chop) {
+ std::string::size_type NullPos = Result.find_first_of((char)0);
+ if (NullPos != std::string::npos)
+ Result.erase(Result.begin()+NullPos, Result.end());
+ }
return Result;
}
}
More information about the llvm-commits
mailing list