Fixed a crash when instantiating template types
diff --git a/abi-compliance-checker.pl b/abi-compliance-checker.pl
index c325c1a..305ca0b 100755
--- a/abi-compliance-checker.pl
+++ b/abi-compliance-checker.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl
###########################################################################
-# ABI Compliance Checker (ACC) 1.99.6
+# ABI Compliance Checker (ACC) 1.99.7
# A tool for checking backward compatibility of a C/C++ library API
#
# Copyright (C) 2009-2010 The Linux Foundation
@@ -64,7 +64,7 @@
use Data::Dumper;
use Config;
-my $TOOL_VERSION = "1.99.6";
+my $TOOL_VERSION = "1.99.7";
my $ABI_DUMP_VERSION = "3.2";
my $OLDEST_SUPPORTED_VERSION = "1.18";
my $XML_REPORT_VERSION = "1.1";
@@ -2563,6 +2563,10 @@
sub instType($$$)
{ # create template instances
my ($Map, $Tid, $LibVersion) = @_;
+
+ if(not $TypeInfo{$LibVersion}{$Tid}) {
+ return undef;
+ }
my $Attr = dclone($TypeInfo{$LibVersion}{$Tid});
foreach my $Key (sort keys(%{$Map}))
@@ -2657,8 +2661,11 @@
if(defined $TypeInfo{$LibVersion}{$New}{"Memb"})
{
- foreach (sort {int($a)<=>int($b)} keys(%{$TypeInfo{$LibVersion}{$New}{"Memb"}})) {
- $TypeInfo{$LibVersion}{$New}{"Memb"}{$_}{"type"} = instType(\%EMap, $TypeInfo{$LibVersion}{$New}{"Memb"}{$_}{"type"}, $LibVersion);
+ foreach (sort {int($a)<=>int($b)} keys(%{$TypeInfo{$LibVersion}{$New}{"Memb"}}))
+ {
+ if(defined $TypeInfo{$LibVersion}{$New}{"Memb"}{$_}{"type"}) {
+ $TypeInfo{$LibVersion}{$New}{"Memb"}{$_}{"type"} = instType(\%EMap, $TypeInfo{$LibVersion}{$New}{"Memb"}{$_}{"type"}, $LibVersion);
+ }
}
}