diff --git a/src/ehp.cpp b/src/ehp.cpp index 9da6d870cc01f7de114810b761d62a0565f0ae40..11c89f8726426419262c90a7fb1a74bd11642dc6 100644 --- a/src/ehp.cpp +++ b/src/ehp.cpp @@ -1516,8 +1516,9 @@ bool fde_contents_t<ptrsize>::parse_fde( { if(this->read_type_with_encoding(c.getCIE().getLSDAEncoding(), lsda_addr, pos, eh_frame_scoop_data, max, eh_addr)) return true; - if(c.lsda.parse_lsda(lsda_addr,gcc_except_scoop, fde_start_addr)) - return true; + if(lsda_addr!=0) + if(c.lsda.parse_lsda(lsda_addr,gcc_except_scoop, fde_start_addr)) + return true; } if(c.eh_pgm.parse_program(pos, eh_frame_scoop_data, end_pos)) @@ -1547,7 +1548,7 @@ void fde_contents_t<ptrsize>::print() const cout<<" FDE len: "<<dec<<fde_range_len<<endl; cout<<" FDE LSDA: "<<hex<<lsda_addr<<endl; eh_pgm.print(fde_start_addr); - if(getCIE().getLSDAEncoding()!= DW_EH_PE_omit) + if(getCIE().getLSDAEncoding()!= DW_EH_PE_omit && lsda_addr!=0 /* indicator of nullptr for lsda */) lsda.print(); else cout<<" No LSDA for this FDE."<<endl;