aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Ponomarenko <aponomarenko@odin.com>2015-11-11 12:57:44 +0300
committerAndrey Ponomarenko <aponomarenko@odin.com>2015-11-11 12:57:44 +0300
commit1b597c3d39a3d4c9ae37f618a0db277021d56c95 (patch)
tree3b80f3ac30967a9b58001c7629c62ac462734bf2
parent99640d301c76bbdcf86803858ed9190d3f249133 (diff)
downloadabi-compliance-checker-1b597c3d39a3d4c9ae37f618a0db277021d56c95.tar.gz
Fixed hang on some template instances.
-rw-r--r--INSTALL4
-rw-r--r--abi-compliance-checker.pl23
-rw-r--r--doc/Changelog.html9
-rw-r--r--doc/index.html2
4 files changed, 28 insertions, 10 deletions
diff --git a/INSTALL b/INSTALL
index 58f5d49..f149315 100644
--- a/INSTALL
+++ b/INSTALL
@@ -9,8 +9,8 @@ All rights reserved.
RELEASE INFORMATION
Project: ABI Compliance Checker (ACC)
-Version: 1.99.14
-Date: 2015-11-01
+Version: 1.99.14.1
+Date: 2015-11-11
This file explains how to install and setup environment
diff --git a/abi-compliance-checker.pl b/abi-compliance-checker.pl
index 708cdd8..dcc2747 100644
--- a/abi-compliance-checker.pl
+++ b/abi-compliance-checker.pl
@@ -1,6 +1,6 @@
#!/usr/bin/perl
###########################################################################
-# ABI Compliance Checker (ABICC) 1.99.14
+# ABI Compliance Checker (ABICC) 1.99.14.1
# A tool for checking backward compatibility of a C/C++ library API
#
# Copyright (C) 2009-2011 Institute for System Programming, RAS
@@ -64,7 +64,7 @@ use Storable qw(dclone);
use Data::Dumper;
use Config;
-my $TOOL_VERSION = "1.99.14";
+my $TOOL_VERSION = "1.99.14.1";
my $ABI_DUMP_VERSION = "3.2";
my $XML_REPORT_VERSION = "1.2";
my $XML_ABI_DUMP_VERSION = "1.2";
@@ -2396,7 +2396,8 @@ sub getTypeInfo_All()
{
my $NBid = instType($TemplateMap{$Version}{$Tid}, $Bid, $Version);
- if($NBid ne $Bid)
+ if($NBid ne $Bid
+ and $NBid ne $Tid)
{
%{$TypeInfo{$Version}{$Tid}{"Base"}{$NBid}} = %{$TypeInfo{$Version}{$Tid}{"Base"}{$Bid}};
delete($TypeInfo{$Version}{$Tid}{"Base"}{$Bid});
@@ -2511,7 +2512,8 @@ sub instType($$$)
{
my $NBid = instType(\%EMap, $Bid, $LibVersion);
- if($NBid ne $Bid)
+ if($NBid ne $Bid
+ and $NBid ne $New)
{
%{$TypeInfo{$LibVersion}{$New}{"Base"}{$NBid}} = %{$TypeInfo{$LibVersion}{$New}{"Base"}{$Bid}};
delete($TypeInfo{$LibVersion}{$New}{"Base"}{$Bid});
@@ -4104,7 +4106,7 @@ sub setBaseClasses($$)
my ($Access, $BInfoId) = ($1, $2);
my $ClassId = getBinfClassId($BInfoId);
- if($ClassId==$TypeId)
+ if($ClassId eq $TypeId)
{ # class A<N>:public A<N-1>
next;
}
@@ -20257,8 +20259,15 @@ sub read_ABI_Dump($$)
my %TInfo = %{$TypeInfo{$LibVersion}{$TypeId}};
if(defined $TInfo{"Base"})
{
- foreach (keys(%{$TInfo{"Base"}})) {
- $Class_SubClasses{$LibVersion}{$_}{$TypeId}=1;
+ foreach my $SubId (keys(%{$TInfo{"Base"}}))
+ {
+ if($SubId eq $TypeId)
+ { # Fix erroneus ABI dump
+ delete($TypeInfo{$LibVersion}{$TypeId}{"Base"}{$SubId});
+ next;
+ }
+
+ $Class_SubClasses{$LibVersion}{$SubId}{$TypeId} = 1;
}
}
if($TInfo{"Type"} eq "MethodPtr")
diff --git a/doc/Changelog.html b/doc/Changelog.html
index 3921131..b7c3f92 100644
--- a/doc/Changelog.html
+++ b/doc/Changelog.html
@@ -44,6 +44,15 @@
<p/>
<br/>
+<b>Version 1.99.14.1 (November 11, 2015)</b><br/>
+<b>Bug Fixes</b>
+<ul>
+ <li>
+ Fixed hang on some template instances
+ </li>
+</ul>
+<br/>
+
<b>Version 1.99.14 (November 01, 2015)</b><br/>
<b>New Options</b>
<ul>
diff --git a/doc/index.html b/doc/index.html
index 227650c..56b377e 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -94,7 +94,7 @@
<h2>Downloads</h2>
<p>All releases can be downloaded from <a href="https://github.com/lvc/abi-compliance-checker/">this page</a>.</p>
-<p>Latest release: <a href="https://github.com/lvc/abi-compliance-checker/archive/1.99.14.tar.gz">abi-compliance-checker-1.99.14.tar.gz</a></p>
+<p>Latest release: <a href="https://github.com/lvc/abi-compliance-checker/archive/1.99.14.1.tar.gz">abi-compliance-checker-1.99.14.1.tar.gz</a></p>
<p>Read-only access to the latest development version:</p>