From 8fd2e269f7daa8e939cd883949c712be30621bfa Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 3 Jan 2001 18:43:09 +0000 Subject: [PATCH] MakeRetrieveViewRuleName was scribbling on memory that didn't belong to it. Bad dog. --- src/backend/commands/view.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index 0f726e8e6e..a421119524 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: view.c,v 1.51 2000/12/21 17:36:15 tgl Exp $ + * $Id: view.c,v 1.52 2001/01/03 18:43:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -110,19 +110,20 @@ char * MakeRetrieveViewRuleName(char *viewName) { char *buf; -#ifdef MULTIBYTE - int len; -#endif - - buf = palloc(strlen(viewName) + 5); - snprintf(buf, strlen(viewName) + 5, "_RET%s", viewName); + int buflen, + maxlen; + buflen = strlen(viewName) + 5; + buf = palloc(buflen); + snprintf(buf, buflen, "_RET%s", viewName); + /* clip to less than NAMEDATALEN bytes, if necessary */ #ifdef MULTIBYTE - len = pg_mbcliplen(buf,strlen(buf),NAMEDATALEN-1); - buf[len] = '\0'; + maxlen = pg_mbcliplen(buf, strlen(buf), NAMEDATALEN-1); #else - buf[NAMEDATALEN-1] = '\0'; + maxlen = NAMEDATALEN-1; #endif + if (maxlen < buflen) + buf[maxlen] = '\0'; return buf; } -- 2.11.0