summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2000-04-18 00:24:30 +0000
committerTom Lane2000-04-18 00:24:30 +0000
commit6216e84df611759f626107180f47087260e36ca9 (patch)
treef900733237ddcef05a407c7227b6beac16136e67
parent3b192c232d64fce4b968c3238746957c9bee32f1 (diff)
Make ECPGraise's str parameter const to suppress warnings from gcc
and errors from pickier compilers.
-rw-r--r--src/interfaces/ecpg/include/ecpglib.h2
-rw-r--r--src/interfaces/ecpg/lib/error.c12
2 files changed, 8 insertions, 6 deletions
diff --git a/src/interfaces/ecpg/include/ecpglib.h b/src/interfaces/ecpg/include/ecpglib.h
index 8b7e1ecd403..f255e4f28a0 100644
--- a/src/interfaces/ecpg/include/ecpglib.h
+++ b/src/interfaces/ecpg/include/ecpglib.h
@@ -34,7 +34,7 @@ extern "C"
const char *descriptor, const char *query);
bool ECPGdeallocate_desc(int line, const char *name);
bool ECPGallocate_desc(int line, const char *name);
- void ECPGraise(int line, int code, char *str);
+ void ECPGraise(int line, int code, const char *str);
bool ECPGget_desc_header(int, char *, int *);
bool ECPGget_desc(int, char *, int,...);
diff --git a/src/interfaces/ecpg/lib/error.c b/src/interfaces/ecpg/lib/error.c
index e2da331757a..369972687cd 100644
--- a/src/interfaces/ecpg/lib/error.c
+++ b/src/interfaces/ecpg/lib/error.c
@@ -7,7 +7,7 @@
#include <sqlca.h>
void
-ECPGraise(int line, int code, char *str)
+ECPGraise(int line, int code, const char *str)
{
sqlca.sqlcode = code;
@@ -119,13 +119,15 @@ ECPGraise(int line, int code, char *str)
break;
case ECPG_PGSQL:
+ {
+ int slen = strlen(str);
/* strip trailing newline */
- if (str[strlen(str) - 1] == '\n')
- str[strlen(str) - 1] = '\0';
-
+ if (slen > 0 && str[slen - 1] == '\n')
+ slen--;
snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),
- "'%s' in line %d.", str, line);
+ "'%.*s' in line %d.", slen, str, line);
break;
+ }
case ECPG_TRANS:
snprintf(sqlca.sqlerrm.sqlerrmc, sizeof(sqlca.sqlerrm.sqlerrmc),