瀏覽代碼

* Fixed resource-leak on exceptions during creating/dropping databases, patch from taka_jp, bug #13587

git-svn-id: trunk@13190 -
joost 16 年之前
父節點
當前提交
d39e82b256
共有 1 個文件被更改,包括 15 次插入12 次删除
  1. 15 12
      packages/fcl-db/src/sqldb/mysql/mysqlconn.inc

+ 15 - 12
packages/fcl-db/src/sqldb/mysql/mysqlconn.inc

@@ -310,18 +310,21 @@ begin
 
   InitialiseMysql;
 
-  H:=HostName;
-  U:=UserName;
-  P:=Password;
-  AMySQL := nil;
-  ConnectMySQL(AMySQL,pchar(H),pchar(U),pchar(P));
-
-  if mysql_query(AMySQL,pchar(query))<>0 then
-    MySQLError(AMySQL,Format(SErrExecuting,[StrPas(mysql_error(AMySQL))]),Self);
-
-  mysql_close(AMySQL);
-
-  ReleaseMysql;
+  try
+    H:=HostName;
+    U:=UserName;
+    P:=Password;
+    AMySQL := nil;
+    ConnectMySQL(AMySQL,pchar(H),pchar(U),pchar(P));
+    try
+      if mysql_query(AMySQL,pchar(query))<>0 then
+        MySQLError(AMySQL,Format(SErrExecuting,[StrPas(mysql_error(AMySQL))]),Self);
+    finally
+      mysql_close(AMySQL);
+    end;
+  finally
+    ReleaseMysql;
+  end;
 end;
 
 function TConnectionName.EscapeString(const Str: string): string;