Hi Paolo,

this fixes an issue that if I call release and the finalizer will be run
afterwards that GSt crashes in a double free inside the PQclear call.

>From d48cb22e2e470a9d1fd0f05ce0acb20c5cdc0ff3 Mon Sep 17 00:00:00 2001
From: Holger Hans Peter Freyther <[email protected]>
Date: Mon, 11 Apr 2011 10:04:17 +0200
Subject: [PATCH] dbd-postgresql: Handle multiple calls to primClear

Calling ResultSet>>#release will invoke PQclear and
remove the object from the list of finalizers but the
finalizer might still be executed.

2011-04-11  Holger Hans Peter Freyther  <[email protected]>

	* ResultSet.st: Handle multiple calls to primClear.
---
 packages/dbd-postgresql/ChangeLog    |    4 ++++
 packages/dbd-postgresql/ResultSet.st |    4 +++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/packages/dbd-postgresql/ChangeLog b/packages/dbd-postgresql/ChangeLog
index ae06313..9b02b33 100644
--- a/packages/dbd-postgresql/ChangeLog
+++ b/packages/dbd-postgresql/ChangeLog
@@ -1,3 +1,7 @@
+2011-04-11  Holger Hans Peter Freyther  <[email protected]>
+
+	* ResultSet.st: Handle multiple calls to primClear.
+
 2011-04-09  Paolo Bonzini  <[email protected]>
 
 	* Statement.st: Move field conversion here...
diff --git a/packages/dbd-postgresql/ResultSet.st b/packages/dbd-postgresql/ResultSet.st
index a8432d5..827bec8 100644
--- a/packages/dbd-postgresql/ResultSet.st
+++ b/packages/dbd-postgresql/ResultSet.st
@@ -236,7 +236,9 @@ ResultSet subclass: PGResultSet [
 
     primClear [
 	<category: 'PG specific'>
-	handle clear
+	handle ifNotNil: [
+		handle clear.
+		handle := nil]
     ]
 
     release [
-- 
1.7.4.2

_______________________________________________
help-smalltalk mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-smalltalk

Reply via email to