aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2005-07-14 06:46:17 +0000
committerBruce Momjian <bruce@momjian.us>2005-07-14 06:46:17 +0000
commitcff9c5748aef10a7ef6ed20fe30e0482951c9b29 (patch)
treee7579a0f13388d4e2548855593147d181ef9081a /src
parentc3f1b0f4dd1a6f0c282e7bf9fe717ce4c1591bf3 (diff)
downloadpostgresql-cff9c5748aef10a7ef6ed20fe30e0482951c9b29.tar.gz
postgresql-cff9c5748aef10a7ef6ed20fe30e0482951c9b29.zip
Fix malloc length for new numeric separator patch.
Centralize malloc into function.
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/print.c88
1 files changed, 26 insertions, 62 deletions
diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c
index 7af422e0b06..d62030b755d 100644
--- a/src/bin/psql/print.c
+++ b/src/bin/psql/print.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.63 2005/07/10 15:53:42 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.64 2005/07/14 06:46:17 momjian Exp $
*/
#include "postgres_fe.h"
#include "common.h"
@@ -29,6 +29,20 @@
#include "mbprint.h"
+static void *
+pg_local_malloc(size_t size)
+{
+ void *tmp;
+
+ tmp = malloc(size);
+ if (!tmp)
+ {
+ psql_error("out of memory\n");
+ exit(EXIT_FAILURE);
+ }
+ return tmp;
+}
+
static int
num_numericseps(const char *my_str)
{
@@ -46,6 +60,7 @@ num_numericseps(const char *my_str)
else
return int_len / 3 - 1; /* no leading separator */
}
+
static int
len_with_numericsep(const char *my_str)
{
@@ -77,12 +92,7 @@ format_numericsep(char *my_str, char *numericsep)
if (digits_before_sep == 0)
new_len--; /* no leading separator */
- new_str = malloc(new_len);
- if (!new_str)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
+ new_str = pg_local_malloc(new_len + 1);
for (i=0, j=0; ; i++, j++)
{
@@ -167,13 +177,8 @@ print_unaligned_text(const char *title, const char *const *headers,
if ((opt_align[i % col_count] == 'r') && strlen(*ptr) > 0 &&
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
{
- char *my_cell = malloc(len_with_numericsep(*ptr));
+ char *my_cell = pg_local_malloc(len_with_numericsep(*ptr) + 1);
- if (!my_cell)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
strcpy(my_cell, *ptr);
format_numericsep(my_cell, opt_numericsep);
fputs(my_cell, fout);
@@ -249,13 +254,8 @@ print_unaligned_vertical(const char *title, const char *const *headers,
if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
{
- char *my_cell = malloc(len_with_numericsep(*ptr));
+ char *my_cell = pg_local_malloc(len_with_numericsep(*ptr) + 1);
- if (!my_cell)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
strcpy(my_cell, *ptr);
format_numericsep(my_cell, opt_numericsep);
fputs(my_cell, fout);
@@ -482,13 +482,8 @@ print_aligned_text(const char *title, const char *const *headers,
{
if (strlen(*ptr) > 0 && opt_numericsep != NULL && strlen(opt_numericsep) > 0)
{
- char *my_cell = malloc(cell_w[i]);
+ char *my_cell = pg_local_malloc(cell_w[i] + 1);
- if (!my_cell)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
strcpy(my_cell, *ptr);
format_numericsep(my_cell, opt_numericsep);
fprintf(fout, "%*s%s", widths[i % col_count] - cell_w[i], "", my_cell);
@@ -634,12 +629,7 @@ print_aligned_vertical(const char *title, const char *const *headers,
fprintf(fout, "%s\n", title);
/* make horizontal border */
- divider = malloc(hwidth + dwidth + 10);
- if (!divider)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
+ divider = pg_local_malloc(hwidth + dwidth + 10);
divider[0] = '\0';
if (opt_border == 2)
strcat(divider, "+-");
@@ -661,15 +651,9 @@ print_aligned_vertical(const char *title, const char *const *headers,
{
if (!opt_barebones)
{
- char *record_str = malloc(32);
+ char *record_str = pg_local_malloc(32);
size_t record_str_len;
- if (!record_str)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
-
if (opt_border == 0)
snprintf(record_str, 32, "* Record %d", record++);
else
@@ -709,13 +693,8 @@ print_aligned_vertical(const char *title, const char *const *headers,
fputs(" ", fout);
{
- char *my_cell = malloc(cell_w[i]);
+ char *my_cell = pg_local_malloc(cell_w[i] + 1);
- if (!my_cell)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
strcpy(my_cell, *ptr);
if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
@@ -855,13 +834,8 @@ print_html_text(const char *title, const char *const *headers,
else if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
{
- char *my_cell = malloc(len_with_numericsep(*ptr));
+ char *my_cell = pg_local_malloc(len_with_numericsep(*ptr) + 1);
- if (!my_cell)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
strcpy(my_cell, *ptr);
format_numericsep(my_cell, opt_numericsep);
html_escaped_print(my_cell, fout);
@@ -946,13 +920,8 @@ print_html_vertical(const char *title, const char *const *headers,
else if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
{
- char *my_cell = malloc(len_with_numericsep(*ptr));
+ char *my_cell = pg_local_malloc(len_with_numericsep(*ptr) + 1);
- if (!my_cell)
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
strcpy(my_cell, *ptr);
format_numericsep(my_cell, opt_numericsep);
html_escaped_print(my_cell, fout);
@@ -1646,12 +1615,7 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout, FILE *f
exit(EXIT_FAILURE);
}
- footers[0] = malloc(100);
- if (!footers[0])
- {
- fprintf(stderr, _("out of memory\n"));
- exit(EXIT_FAILURE);
- }
+ footers[0] = pg_local_malloc(100);
if (PQntuples(result) == 1)
snprintf(footers[0], 100, _("(1 row)"));
else