From cff9c5748aef10a7ef6ed20fe30e0482951c9b29 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 14 Jul 2005 06:46:17 +0000 Subject: [PATCH] Fix malloc length for new numeric separator patch. Centralize malloc into function. --- src/bin/psql/print.c | 88 +++++++++++++------------------------------- 1 file changed, 26 insertions(+), 62 deletions(-) diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c index 7af422e0b0..d62030b755 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