]> granicus.if.org Git - postgresql/commitdiff
The patch fixes a rare bug that may occur when one tries to vacuum a single
authorVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 17 Apr 1997 01:45:36 +0000 (01:45 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 17 Apr 1997 01:45:36 +0000 (01:45 +0000)
table. The table name is de-allocated by the CommitTransactionCommand()
in vc_init() before it is copied in VacRel.data and sometimes this causes
a SIGSEGV. My patch simply moves the strcpy before vc_init.

Submitted by Massimo Dal Zotto <dz@cs.unitn.it>.

src/backend/commands/vacuum.c

index 2df4d172bd1716cde4bbffc25d9764d12f513505..4779f3eb5b3b9fbcfe1eb7dda943abcac5202e02 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.28 1997/04/15 18:18:21 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.29 1997/04/17 01:45:36 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -110,18 +110,17 @@ vacuum(char *vacrel, bool verbose)
        MESSAGE_LEVEL = DEBUG;
 
     /* vacrel gets de-allocated on transaction commit */
+    if (vacrel)
+       strcpy(VacRel.data,vacrel);
        
     /* initialize vacuum cleaner */
     vc_init();
 
     /* vacuum the database */
     if (vacrel)
-    {
-       strcpy(VacRel.data,vacrel);
-       vc_vacuum(&VacRel);
-    }
+       vc_vacuum(&VacRel);
     else
-       vc_vacuum(NULL);
+       vc_vacuum(NULL);
 
     /* clean up */
     vc_shutdown();