[svn:DBD-Pg] r12711 - DBD-Pg/trunk

[email protected]
Newsgroups gmane.comp.db.postgresql.dbdpg.cvs
Message-ID <[email protected]>
Author: turnstep
Date: Mon Apr 20 09:42:07 2009
New Revision: 12711

Modified:
   DBD-Pg/trunk/Changes
   DBD-Pg/trunk/dbdimp.c

Log:
Fix leak in pg_warn, per bug 45163. Thanks to [email protected] for the patch.


Modified: DBD-Pg/trunk/Changes
==============================================================================
--- DBD-Pg/trunk/Changes	(original)
+++ DBD-Pg/trunk/Changes	Mon Apr 20 09:42:07 2009
@@ -1,5 +1,9 @@
 ('GSM' is Greg Sabino Mullane, greg-738XdyZ4GzZWk0Htik3J/[email protected])
 
+2.13.1
+
+  - Fix leak in pg_warn (CPAN bug #45163) [[email protected]]
+
 2.13.0 Released April 13, 2009
 
   - Ensure we always set sqlstate inside of pg_st_prepare_statement

Modified: DBD-Pg/trunk/dbdimp.c
==============================================================================
--- DBD-Pg/trunk/dbdimp.c	(original)
+++ DBD-Pg/trunk/dbdimp.c	Mon Apr 20 09:42:07 2009
@@ -277,6 +277,9 @@
 static void pg_warn (void * arg, const char * message)
 {
 	dTHX;
+	SV *tmp;
+
+	tmp = sv_2mortal(newRV((SV *)arg));
 
 	/* This fun little bit is to prevent a core dump when the following occurs:
 	   client_min_messages is set to DEBUG3 or greater, and we exit without a disconnect.
@@ -289,11 +292,11 @@
 	   like DBIc_WARN. There may be a better way of handling all this, and we may want to 
 	   default to always warn() - input welcome.
 	*/
-	if (!SvROK(SvMAGIC(SvRV(newRV((SV*)arg)))->mg_obj)) {
+	if (!SvROK(SvMAGIC(SvRV(tmp))->mg_obj)) {
 		return;
 	}
 	else {
-		D_imp_dbh( sv_2mortal(newRV((SV*)arg)) );
+		D_imp_dbh(tmp);
 
 		if (TSTART) TRC(DBILOGFP, "%sBegin pg_warn (message: %s DBIc_WARN: %d PrintWarn: %d)\n",
 						THEADER,
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.