summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2017-06-12 20:46:35 +0000
committerZachary Turner <zturner@google.com>2017-06-12 20:46:35 +0000
commitd334cebac4ca2c51677b415526d1e23476298710 (patch)
tree708ad1f8249248adfbcc8bcf1e5af4885ab954c7 /llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
parent76f063090b2822106f0ff1fc951cae8e8821614f (diff)
downloadbcm5719-llvm-d334cebac4ca2c51677b415526d1e23476298710.tar.gz
bcm5719-llvm-d334cebac4ca2c51677b415526d1e23476298710.zip
Fix a null pointer dereference in llvm-pdbutil pretty.
Static data members were causing a problem because I mistakenly assumed all members would affect a class's layout and so the Layout member would be non-null. llvm-svn: 305229
Diffstat (limited to 'llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp')
-rw-r--r--llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp b/llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
index 54e33683f55..66c29fc5d4e 100644
--- a/llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
+++ b/llvm/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
@@ -151,21 +151,21 @@ bool PrettyClassLayoutGraphicalDumper::shouldRecurse() const {
}
void PrettyClassLayoutGraphicalDumper::dump(const PDBSymbolData &Symbol) {
- assert(CurrentItem != nullptr);
-
- DataMemberLayoutItem &Layout =
- static_cast<DataMemberLayoutItem &>(*CurrentItem);
-
VariableDumper VarDumper(Printer);
VarDumper.start(Symbol, ClassOffsetZero);
- if (Layout.hasUDTLayout() && shouldRecurse()) {
- uint32_t ChildOffsetZero = ClassOffsetZero + Layout.getOffsetInParent();
- Printer.Indent();
- PrettyClassLayoutGraphicalDumper TypeDumper(Printer, RecursionLevel + 1,
- ChildOffsetZero);
- TypeDumper.start(Layout.getUDTLayout());
- Printer.Unindent();
+ if (CurrentItem != nullptr) {
+ DataMemberLayoutItem &Layout =
+ static_cast<DataMemberLayoutItem &>(*CurrentItem);
+
+ if (Layout.hasUDTLayout() && shouldRecurse()) {
+ uint32_t ChildOffsetZero = ClassOffsetZero + Layout.getOffsetInParent();
+ Printer.Indent();
+ PrettyClassLayoutGraphicalDumper TypeDumper(Printer, RecursionLevel + 1,
+ ChildOffsetZero);
+ TypeDumper.start(Layout.getUDTLayout());
+ Printer.Unindent();
+ }
}
DumpedAnything = true;
OpenPOWER on IntegriCloud