From: Tom Lane Date: Sun, 12 Feb 2006 03:30:21 +0000 (+0000) Subject: Fix more fallout from line-wrap patch, to wit, arbitrarily changing X-Git-Tag: REL8_2_BETA1~1447 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6c0d4aabe2fd36e2e808c2d453fcabbe6c8464fa;p=postgresql Fix more fallout from line-wrap patch, to wit, arbitrarily changing the API of PQdsplen without bothering to fix its callers. Although ReportSyntaxErrorPosition could probably do with more smarts about handling control characters, for the moment I'll just get it back to handling tabs consistently. --- diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 8146cd22cb..8f6d03561a 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2005, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.111 2005/11/22 18:17:29 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.112 2006/02/12 03:30:21 tgl Exp $ */ #include "postgres_fe.h" #include "common.h" @@ -444,6 +444,7 @@ ReportSyntaxErrorPosition(const PGresult *result, const char *query) int clen, slen, i, + w, *qidx, *scridx, qoffset, @@ -503,7 +504,11 @@ ReportSyntaxErrorPosition(const PGresult *result, const char *query) { qidx[i] = qoffset; scridx[i] = scroffset; - scroffset += PQdsplen(&query[qoffset], pset.encoding); + w = PQdsplen(&query[qoffset], pset.encoding); + /* treat control chars as width 1; see tab hack below */ + if (w <= 0) + w = 1; + scroffset += w; qoffset += PQmblen(&query[qoffset], pset.encoding); } qidx[i] = qoffset; @@ -618,7 +623,12 @@ ReportSyntaxErrorPosition(const PGresult *result, const char *query) */ scroffset = 0; for (i = 0; i < msg.len; i += PQmblen(&msg.data[i], pset.encoding)) - scroffset += PQdsplen(&msg.data[i], pset.encoding); + { + w = PQdsplen(&msg.data[i], pset.encoding); + if (w <= 0) + w = 1; + scroffset += w; + } /* Finish and emit the message. */ appendPQExpBufferStr(&msg, &wquery[qidx[ibeg]]);