Use abort() instead of exit() to abort library functions

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.
This commit is contained in:
Peter Eisentraut 2012-01-30 21:34:00 +02:00
parent 423ee49b49
commit c6ea8ccea6
3 changed files with 10 additions and 10 deletions

View File

@ -112,17 +112,17 @@ PQprint(FILE *fout, const PGresult *res, const PQprintOpt *po)
if (!(fieldNames = (const char **) calloc(nFields, sizeof(char *)))) if (!(fieldNames = (const char **) calloc(nFields, sizeof(char *))))
{ {
fprintf(stderr, libpq_gettext("out of memory\n")); fprintf(stderr, libpq_gettext("out of memory\n"));
exit(1); abort();
} }
if (!(fieldNotNum = (unsigned char *) calloc(nFields, 1))) if (!(fieldNotNum = (unsigned char *) calloc(nFields, 1)))
{ {
fprintf(stderr, libpq_gettext("out of memory\n")); fprintf(stderr, libpq_gettext("out of memory\n"));
exit(1); abort();
} }
if (!(fieldMax = (int *) calloc(nFields, sizeof(int)))) if (!(fieldMax = (int *) calloc(nFields, sizeof(int))))
{ {
fprintf(stderr, libpq_gettext("out of memory\n")); fprintf(stderr, libpq_gettext("out of memory\n"));
exit(1); abort();
} }
for (numFieldName = 0; for (numFieldName = 0;
po->fieldName && po->fieldName[numFieldName]; 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 *)))) if (!(fields = (char **) calloc(nFields * (nTups + 1), sizeof(char *))))
{ {
fprintf(stderr, libpq_gettext("out of memory\n")); fprintf(stderr, libpq_gettext("out of memory\n"));
exit(1); abort();
} }
} }
else if (po->header && !po->html3) 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))) if (!(fields[i * nFields + j] = (char *) malloc(plen + 1)))
{ {
fprintf(stderr, libpq_gettext("out of memory\n")); fprintf(stderr, libpq_gettext("out of memory\n"));
exit(1); abort();
} }
strcpy(fields[i * nFields + j], pval); strcpy(fields[i * nFields + j], pval);
} }
@ -462,7 +462,7 @@ do_header(FILE *fout, const PQprintOpt *po, const int nFields, int *fieldMax,
if (!border) if (!border)
{ {
fprintf(stderr, libpq_gettext("out of memory\n")); fprintf(stderr, libpq_gettext("out of memory\n"));
exit(1); abort();
} }
p = border; p = border;
if (po->standard) if (po->standard)
@ -605,7 +605,7 @@ PQdisplayTuples(const PGresult *res,
if (!fLength) if (!fLength)
{ {
fprintf(stderr, libpq_gettext("out of memory\n")); fprintf(stderr, libpq_gettext("out of memory\n"));
exit(1); abort();
} }
for (j = 0; j < nFields; j++) for (j = 0; j < nFields; j++)
@ -704,7 +704,7 @@ PQprintTuples(const PGresult *res,
if (!tborder) if (!tborder)
{ {
fprintf(stderr, libpq_gettext("out of memory\n")); fprintf(stderr, libpq_gettext("out of memory\n"));
exit(1); abort();
} }
for (i = 0; i <= width; i++) for (i = 0; i <= width; i++)
tborder[i] = '-'; tborder[i] = '-';

View File

@ -483,7 +483,7 @@ extern pgthreadlock_t pg_g_threadlock;
#define PGTHREAD_ERROR(msg) \ #define PGTHREAD_ERROR(msg) \
do { \ do { \
fprintf(stderr, "%s\n", msg); \ fprintf(stderr, "%s\n", msg); \
exit(1); \ abort(); \
} while (0) } while (0)

View File

@ -445,7 +445,7 @@ get_progname(const char *argv0)
if (progname == NULL) if (progname == NULL)
{ {
fprintf(stderr, "%s: out of memory\n", nodir_name); 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) #if defined(__CYGWIN__) || defined(WIN32)