mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
Fix malloc length for new numeric separator patch.
Centralize malloc into function.
This commit is contained in:
parent
c3f1b0f4dd
commit
cff9c5748a
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
* 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 "postgres_fe.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
@ -29,6 +29,20 @@
|
|||||||
|
|
||||||
#include "mbprint.h"
|
#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
|
static int
|
||||||
num_numericseps(const char *my_str)
|
num_numericseps(const char *my_str)
|
||||||
{
|
{
|
||||||
@ -46,6 +60,7 @@ num_numericseps(const char *my_str)
|
|||||||
else
|
else
|
||||||
return int_len / 3 - 1; /* no leading separator */
|
return int_len / 3 - 1; /* no leading separator */
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
len_with_numericsep(const char *my_str)
|
len_with_numericsep(const char *my_str)
|
||||||
{
|
{
|
||||||
@ -77,12 +92,7 @@ format_numericsep(char *my_str, char *numericsep)
|
|||||||
if (digits_before_sep == 0)
|
if (digits_before_sep == 0)
|
||||||
new_len--; /* no leading separator */
|
new_len--; /* no leading separator */
|
||||||
|
|
||||||
new_str = malloc(new_len);
|
new_str = pg_local_malloc(new_len + 1);
|
||||||
if (!new_str)
|
|
||||||
{
|
|
||||||
fprintf(stderr, _("out of memory\n"));
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=0, j=0; ; i++, j++)
|
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 &&
|
if ((opt_align[i % col_count] == 'r') && strlen(*ptr) > 0 &&
|
||||||
opt_numericsep != NULL && strlen(opt_numericsep) > 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);
|
strcpy(my_cell, *ptr);
|
||||||
format_numericsep(my_cell, opt_numericsep);
|
format_numericsep(my_cell, opt_numericsep);
|
||||||
fputs(my_cell, fout);
|
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 &&
|
if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
|
||||||
opt_numericsep != NULL && strlen(opt_numericsep) > 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);
|
strcpy(my_cell, *ptr);
|
||||||
format_numericsep(my_cell, opt_numericsep);
|
format_numericsep(my_cell, opt_numericsep);
|
||||||
fputs(my_cell, fout);
|
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)
|
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);
|
strcpy(my_cell, *ptr);
|
||||||
format_numericsep(my_cell, opt_numericsep);
|
format_numericsep(my_cell, opt_numericsep);
|
||||||
fprintf(fout, "%*s%s", widths[i % col_count] - cell_w[i], "", my_cell);
|
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);
|
fprintf(fout, "%s\n", title);
|
||||||
|
|
||||||
/* make horizontal border */
|
/* make horizontal border */
|
||||||
divider = malloc(hwidth + dwidth + 10);
|
divider = pg_local_malloc(hwidth + dwidth + 10);
|
||||||
if (!divider)
|
|
||||||
{
|
|
||||||
fprintf(stderr, _("out of memory\n"));
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
divider[0] = '\0';
|
divider[0] = '\0';
|
||||||
if (opt_border == 2)
|
if (opt_border == 2)
|
||||||
strcat(divider, "+-");
|
strcat(divider, "+-");
|
||||||
@ -661,15 +651,9 @@ print_aligned_vertical(const char *title, const char *const *headers,
|
|||||||
{
|
{
|
||||||
if (!opt_barebones)
|
if (!opt_barebones)
|
||||||
{
|
{
|
||||||
char *record_str = malloc(32);
|
char *record_str = pg_local_malloc(32);
|
||||||
size_t record_str_len;
|
size_t record_str_len;
|
||||||
|
|
||||||
if (!record_str)
|
|
||||||
{
|
|
||||||
fprintf(stderr, _("out of memory\n"));
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opt_border == 0)
|
if (opt_border == 0)
|
||||||
snprintf(record_str, 32, "* Record %d", record++);
|
snprintf(record_str, 32, "* Record %d", record++);
|
||||||
else
|
else
|
||||||
@ -709,13 +693,8 @@ print_aligned_vertical(const char *title, const char *const *headers,
|
|||||||
fputs(" ", fout);
|
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);
|
strcpy(my_cell, *ptr);
|
||||||
if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
|
if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
|
||||||
opt_numericsep != NULL && strlen(opt_numericsep) > 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 &&
|
else if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
|
||||||
opt_numericsep != NULL && strlen(opt_numericsep) > 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);
|
strcpy(my_cell, *ptr);
|
||||||
format_numericsep(my_cell, opt_numericsep);
|
format_numericsep(my_cell, opt_numericsep);
|
||||||
html_escaped_print(my_cell, fout);
|
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 &&
|
else if ((opt_align[i % col_count] == 'r') && strlen(*ptr) != 0 &&
|
||||||
opt_numericsep != NULL && strlen(opt_numericsep) > 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);
|
strcpy(my_cell, *ptr);
|
||||||
format_numericsep(my_cell, opt_numericsep);
|
format_numericsep(my_cell, opt_numericsep);
|
||||||
html_escaped_print(my_cell, fout);
|
html_escaped_print(my_cell, fout);
|
||||||
@ -1646,12 +1615,7 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout, FILE *f
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
footers[0] = malloc(100);
|
footers[0] = pg_local_malloc(100);
|
||||||
if (!footers[0])
|
|
||||||
{
|
|
||||||
fprintf(stderr, _("out of memory\n"));
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
if (PQntuples(result) == 1)
|
if (PQntuples(result) == 1)
|
||||||
snprintf(footers[0], 100, _("(1 row)"));
|
snprintf(footers[0], 100, _("(1 row)"));
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user