]> granicus.if.org Git - postgresql/commitdiff
Use abort() instead of exit() to abort library functions
authorPeter Eisentraut <peter_e@gmx.net>
Mon, 30 Jan 2012 19:34:00 +0000 (21:34 +0200)
committerPeter Eisentraut <peter_e@gmx.net>
Mon, 30 Jan 2012 19:34:00 +0000 (21:34 +0200)
In some hopeless situations, certain library functions in libpq and
libpgport quit the program.  Use abort() for that instead of exit(),
so we don't interfere with the normal exit codes the program might
use, we clearly signal the abnormal termination, and the caller has a
chance of catching the termination.

This was originally pointed out by Debian's Lintian program.

src/interfaces/libpq/fe-print.c
src/interfaces/libpq/libpq-int.h
src/port/path.c

index 8a854897b7c9c920fbe2bf8448bc041407aa5bfb..6695492c7fc3a3443e9f42839e65bc1fbb3ada46 100644 (file)
@@ -112,17 +112,17 @@ PQprint(FILE *fout, const PGresult *res, const PQprintOpt *po)
                if (!(fieldNames = (const char **) calloc(nFields, sizeof(char *))))
                {
                        fprintf(stderr, libpq_gettext("out of memory\n"));
-                       exit(1);
+                       abort();
                }
                if (!(fieldNotNum = (unsigned char *) calloc(nFields, 1)))
                {
                        fprintf(stderr, libpq_gettext("out of memory\n"));
-                       exit(1);
+                       abort();
                }
                if (!(fieldMax = (int *) calloc(nFields, sizeof(int))))
                {
                        fprintf(stderr, libpq_gettext("out of memory\n"));
-                       exit(1);
+                       abort();
                }
                for (numFieldName = 0;
                         po->fieldName && po->fieldName[numFieldName];
@@ -203,7 +203,7 @@ PQprint(FILE *fout, const PGresult *res, const PQprintOpt *po)
                        if (!(fields = (char **) calloc(nFields * (nTups + 1), sizeof(char *))))
                        {
                                fprintf(stderr, libpq_gettext("out of memory\n"));
-                               exit(1);
+                               abort();
                        }
                }
                else if (po->header && !po->html3)
@@ -391,7 +391,7 @@ do_field(const PQprintOpt *po, const PGresult *res,
                        if (!(fields[i * nFields + j] = (char *) malloc(plen + 1)))
                        {
                                fprintf(stderr, libpq_gettext("out of memory\n"));
-                               exit(1);
+                               abort();
                        }
                        strcpy(fields[i * nFields + j], pval);
                }
@@ -462,7 +462,7 @@ do_header(FILE *fout, const PQprintOpt *po, const int nFields, int *fieldMax,
                if (!border)
                {
                        fprintf(stderr, libpq_gettext("out of memory\n"));
-                       exit(1);
+                       abort();
                }
                p = border;
                if (po->standard)
@@ -605,7 +605,7 @@ PQdisplayTuples(const PGresult *res,
                if (!fLength)
                {
                        fprintf(stderr, libpq_gettext("out of memory\n"));
-                       exit(1);
+                       abort();
                }
 
                for (j = 0; j < nFields; j++)
@@ -704,7 +704,7 @@ PQprintTuples(const PGresult *res,
                        if (!tborder)
                        {
                                fprintf(stderr, libpq_gettext("out of memory\n"));
-                               exit(1);
+                               abort();
                        }
                        for (i = 0; i <= width; i++)
                                tborder[i] = '-';
index d967d60f383e445e0e76e58e5034afccdef68098..987311efc8dd63d15b1849e13f58770f581af208 100644 (file)
@@ -483,7 +483,7 @@ extern pgthreadlock_t pg_g_threadlock;
 #define PGTHREAD_ERROR(msg) \
        do { \
                fprintf(stderr, "%s\n", msg); \
-               exit(1); \
+               abort(); \
        } while (0)
 
 
index 932206a1a6bac4b9adbe931b47c4b7e2ae52b058..be55e4af60d7c3866d4c853805c7b380a545b9ac 100644 (file)
@@ -445,7 +445,7 @@ get_progname(const char *argv0)
        if (progname == NULL)
        {
                fprintf(stderr, "%s: out of memory\n", nodir_name);
-               exit(1);                                /* This could exit the postmaster */
+               abort();                                /* This could exit the postmaster */
        }
 
 #if defined(__CYGWIN__) || defined(WIN32)