From dac243ab9ee057bdffb3d678cc42f3ebcb8e707f Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Thu, 18 Sep 2014 15:55:35 +0000 Subject: [PATCH] Fix division by zero crash when SQL server reports an empty string from SELECT SERVERPROPERTY('ProductVersion'). See http://www.heidisql.com/forum.php?t=16369 --- source/dbconnection.pas | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/dbconnection.pas b/source/dbconnection.pas index 23afac30..2b510787 100644 --- a/source/dbconnection.pas +++ b/source/dbconnection.pas @@ -1666,7 +1666,7 @@ end; procedure TAdoDBConnection.SetActive(Value: Boolean); var - tmpdb, Error, NetLib, DataSource, QuotedPassword: String; + tmpdb, Error, NetLib, DataSource, QuotedPassword, ServerVersion: String; rx: TRegExpr; i: Integer; begin @@ -1745,7 +1745,9 @@ begin FServerVersionUntouched := rx.Match[1]; try // Try to get more exact server version to avoid displaying "20.14" in some cases - FServerVersionUntouched := GetVar('SELECT SERVERPROPERTY('+EscapeString('ProductVersion')+')'); + ServerVersion := GetVar('SELECT SERVERPROPERTY('+EscapeString('ProductVersion')+')'); + if ExecRegExpr('(\d+)\.(\d+)\.(\d+)\.(\d+)', ServerVersion) then + FServerVersionUntouched := ServerVersion; except // Above query only works on SQL Server 2008 and newer // Keep value from SELECT @@VERSION on older servers